欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

js注意点(一)

程序员文章站 2022-05-12 22:06:37
...

原始(Primitive)类型

在js中,存在着6中原始值,分别是:undefined,null,string,number,boolean,在es6中新增了一种基本数据类型为symbol。
原始数据都为值类型,是没有函数可以调用的,比如undefined.toString()
‘1’.toString() 是可以使用的。其实在这种情况下,‘1’ 已经不是原始类型了,而是被强制转换成了 String 类型也就是对象类型,所以可以调用 toString 函数。
这里需要注意的是,null这个类型是属于原始数据类型,即使typeof输出的结果为Object。

其实这是js存在很久的bug,这只是 JS 存在的一个悠久 Bug。
在 JS 的最初版本中使用的是 32 位系统,为了性能考虑使用低位存储变量的类型信息,000 开头代表是对象,然而 null 表示为全零,所以将它错误的判断为 object 。虽然现在的内部类型判断代码已经改变了,但是对于这个 Bug 却是一直流传下来。

= = 与 = = =

想必大家都知道两个等号与三个等号的区别,两个等号代表值相等,三个等号判断类型与值是否都相等,其实在开发中除了null外,其他的都应该使用===进行判断,下面放出一些使用两个等号相等的特殊案例

100 == '100' ;      // true
0 == '';            // true
0 == false;         // true
false == '';        // true
null == undefined;  // true
null === undefined  //false

下面是使用null判断的实例

var obj = { x: 100 };
console.log(obj.a==null) //true
console.log(obj.a===undefined) //true

if语句的判断条件

在js中,if(condition){},条件语句的判断为最终为truly变量与falsely变量,什么为truly变量,什么又是falsely变量,下面我将举出一些特定的例子

!!0 === false;
!!false === false;
!!"" === false;
!!NaN === false;
!!undefined === false;
!!null === false;

逻辑判断语句

console.log(10 && 0 ) // 0
console.log('' || 'abc') // abc
console.log(!window.abc) // true

从上面的代码可以看出,使用&&运算时取第一个falsely变量的值,使用||运算时取第一个truly变量的值,使用&&运算时,当所有条件都为true时,返回最后一个,使用或运算时,当所有条件都为false时,也返回最后一个。