Javascript 的类型转换之减号

  专职写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