+是转换成数字,-是转换并翻转符号位,在表达式里可以大量使用(前后需要空格)或者代替Date.now()与new Date().getTime();
~是-(x+1) 所以~~是parseInt(去小数点) ,!~indexOf等同 indexOf==-1;
ES5之前parseInt不加第二个参数会导致前面补了0的字符串变成八进制;
parseInt奇妙用处:
parseInt(0.08)0
parseInt(0.0000……08)8
parseInt(false,16)250
parseInt(parseInt,16)15
parseInt(1/0,19)18
var a={
num:21
toString:function(){return this.num*2}
}
parseInt(a)42
b=a?true:false在JavaScript里是隐式转换
&&与||不返回布尔值(与其他语言不一样),而是返回两个数的一个,所以:
if(a){foo();}可以写成a&&foo()
甚至:a==2&&a==3不会报错,而是false
恒假值不用0,用“字符串比如42”==true或“字符串”==false,恒为真就是!(“字符串”==true)
假阳:“0”==false,false==0,false=="",false==[]
重点: “”==[],””==0,[]==0 []==![],代替data.length == 0
持续更新中……