运算符
1.一元操作符(+,-)
加法规则:
Number + Number -> 加法
Number + Boolean -> 加法
Boolean + Boolean -> 加法
String + Number -> 连接
String + Boolean -> 连接
String + String -> 连接
2.布尔操作符(&&和||)
a && b,如果a存在,则返回b,否则返回a。
a || b,如果a存在,则返回a,否则返回b。
a,b不一定为boolean;
隐氏类型转换:
1.除0之外的所有数字,转换为布尔型都为true;
2.除””之外的所有字符,转换为布尔值都为true;(注:空格也为true)
3.null和undefined转换为布尔型为false;
所以,‘’,0,NaN,null,undefined还返回false
3.比较运算符(>,>=,==)
">"(">=")运算规则
a.两个都是number,执行数值比较
b.两个都是string,比较对应的字符编码值
c.一个number,将另一个转换为一个数值.
字符串数字会转换为数字;非纯数字会转换为NaN,不论大小都返回false;""转换为0
d.布尔值true转换为1;false转换为0
"=="运算规则
规则同上
==会进行强制类型转换,===不会
undefined==null //true (undefined是null派生出来的)
null== ""//false (typeof null是object,typeof ""是string)
false=='' "==0
特殊:null会尝试转为0
但 null==0 false
null > 0 // null 尝试转型为number , 则为0 . 所以结果为 false.
null >= 0 // null 尝试转为number ,则为0 , 结果为 true.
null == 0 // null在设计上,在此处不尝试转型. 所以 结果为false.
4.赋值运算符(=,+=)
递增:i++和++i
i++返回的是自增之前的值,++i返回的则是自增后的值。
注:
Number类型:int float NaN
任何涉及NaN的操作(如NaN/10)都会返回NaN;
NaN与任何值都不相等,包括NaN本身。
isNaN接受到一个值会尝试将它转换为数值。 isNaN(“16”) false
数值转换:Number, parseInt, parseFloat(推荐)(parseInt从头解析string为整数,在遇到不能解析的字符时就返回已解析的整数部分;如果第一个字符就不能解析,就直接返回NaN)
Number(“email”) 结果: NaN
Number(“20px”) 结果: NaN
parseInt(“20px”) 结果: 20
parseFloat(“20px”) 结果: 20
parseInt(“px20”) 结果: NaN