1、坚持使用“严格模式”进行编码,兼容性好。(“use strict”)。
混合使用时,将严格模式内容和非严格模式内容放在立即调用的函数表达式中,否则会相互影响。
(function(){
"use strict";
function f(){
……
}
})();
(function(){
function f(){
……
}
})();
2、js的浮点数
js中所有数字都是双精度浮点数,能表达53位精度的整数。
注意浮点数中的精度陷阱,比如:(0.1+0.2)!=0.3。
3、隐式的强制转换
3+true //4
“17”*3 //51
运算符“+”承载了数字相加和字符串连接。
位运算符会将操作数转换为数字,而且是32位整数。(位运算符:~,&,^,|;移位运算符:<<,>>,>>>)。
位运算符是把操作数看作一系列单独的位,而不是一个数字值。(现将数字装换为二进制再运算)
~:按位取反,也可理解为对数字求负,再减1。~25===-26 //true
&:按位与,1&1 //1; 1&0 //0; 0&1 //0;0&0 //0.
^:按位异或,即同为0,不同为1,1^1 //0; 0^0 //0;1^0 //1; 0^1 //1;
|:按位或,有一个为1,则结果为1.
移位运算符超过的位将丢失,而空出的位则补0。
>>:右移 先将数字转换为二进制,然后进行移位,保留符号。
<<:左移
>>>:右移
>>和>>>的区别(有符号和无符号):数字为正数时,结果相同,为负时,先将其转换为32位二进制(最后一位为符号位),然后对其补码(反码+1)进行移位(符号位也参与移位,当成一般数字位)。
NaN不等于任何数。
js中一共有7个假值:0,-0,“”,null,undefined,false,NaN。
4、避免对混合类型使用==运算符