专职写JS已经有一个月了(对,没错就是一个月),从2014年11月24实习开始到今的2月份,我做的工作一直都是切图,另外跟着老板学产品,现在我一听到切图两字,我就想吐...所以我找了一份专职写JS的工作,尼玛说道JS,我想来想去JS中最让我容易搞乱的就类型转换了。所以狠下心来,这几天把类型转换给搞清楚...
今天说一下减法对于类型转换的影响(摘抄自高程三):
减法操作符(-)是一个极为常用的操作符,七用法如下所示:
var result = 2 -1;
与加法操作符类似,ECMAScript 中的减法操作符在处理各种数据类型转换时,同样要遵循一些特殊规则,如下所示:
1、如果两个操作符都是数值, 则执行常规的算术减法操作,并返回结果。
2、如果有一个操作数是NAN, 则结果也是NaN。
3、如果有一个操作数是字符串、布尔值、null、undefined则先在后台调用Number()方法将其转换为数值, 然后在根据根据前面的规则进行减法计算,如果转换的结果是NaN, 则减法的结果就是NaN。
4、如果有一个操作数是对象,则调用对象的 valueof() 方法以取得该方法返回后的值,如果得到的值是NaN,则减法的结果就是NaN, 如果对象没有valueOf()方法,则调用其toString()方法并将得到的字符串转为数值。
大概就这四条,其他的感觉实际开发中用处不大。
下面举个例子:
//var res = 5 - true; // 4 因为true被转换成1了 //var res = NaN - 1; // NaN //var res = 5 - 2; // 3 //var res = 5 -""; // 5 因为空字串被转换成0了 //var res = 5 - "2"; // 3 因为字符串2被转成数字2了 var res = 5 - null; // 5 因为null 被转换成数值0了 // 在js中null、""、false 都可以被转化成数字0 // undefined 转成数值是 NaN // 非空字符串 转为数值是: 字符串对应的数字值 或 NaN