專職寫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