問題
某龍的筆試題,問console.log(+new Array(017));
輸出什麼
第一反應是考察new Array()跟017
其實考察的是+
+
運算符作爲二元運算符時,有兩個功能
- 數字相加
- 連接字符串
數字相加沒啥好說的,連接字符串時,會先把兩個參數都轉換成字符串再進行連接。
+
作爲一元運算符時,會將參數轉換爲數字返回
結果
所以console.log(+new Array(017));
輸出的是NaN
其他
類似的還有-
運算符,輸出一個轉換後的負數
附上一些其他的輸出
console.log(+new Array());
//0
console.log(+new Array(0));
//0
console.log(+new Array(1));
//0
console.log(+new Array(2)); //2以上都是NaN
//NaN
console.log(+[]);
//0
console.log(+[1]);
//1
console.log(+[1, 2]);
//NaN
console.log(+[undefined]);
//0
console.log(+[undefined, undefined]);
//NaN