JavaScript小细节

函数和操作符

双等号与三等号

==操作符比较时会进行类型的强制转换,即可以比较两个不同类型的对象,在执行比较前会尝试将两个对象转换成同一类型,如下:

 

"1" == 1;  //true

这样会误以为造成误导,上面的例子,我们可以先将字符串转换成数字型,然后用对类型敏感的三重等号(===)来进行比较,如下:

 

 

Number("1") === 1;  //true

由于双等号具有强制类型转换的行为,所以会打破一般的传递性规则,如下比较:

 

 

"" == 0;  //true  -空字符串会被强制转换为数字0
0 == "0";  //true  -数字0会被强制转换为字符串"0"
"" == "0";  //false  -两操作数都是字符串,所以不会强制转换

如果使用三重等号,上面的三个比较全部返回 false

 

null 与 undefined

null 和 undefined 的值相等,但类型不同

typeof undefined             // undefined

typeof null                  // object

null === undefined           // false

null == undefined            // true

 

parseInt第二参数

如果忽略 parseInt 的第二个参数,那么数字的基数将有下面的规则决定:

默认基数为10,即按10进制解析;

如果数字以0x开头,那么基数为16,即按16进制解析;

如果数字以0开头,那么基数为8,即按8进制解析。

常见问题,如果我们让用户输入以0开头的数字,这时候就会按8进制的方式解析,这样我们就会看到如下效果:

parseInt("8");  //8
parseInt("08");  //0

因此我们通常会指定 parseInt 的第二参数,如下:

parseInt("8", 10);   //8
parseInt("08", 10);   //8


 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值