{}普通對象 []數組對象 Math數學函數對象 Data日期對象 類數組對象 實例對象 ......
number包含:常規數字(整數、小數、負數和零)、NaN和infinity
NaN: not a number不是一個有效數字,可是它是屬於數字類型的。javascript
注意:NaN和誰都不相等,包括和本身也不相等;因此咱們不能使用是否和NaN相等來判斷一個數是不是非有效數字。
java
isNaN的檢測機制: isNaN是用來檢測一個數字是否爲非有效數字,是非有效數字則返回true,不是非有效數字則返回false(不是非有數字就等同因而有效數字)既然使用類檢測數字的,那麼isNaN機制在運做的時候就首先要驗證檢測的值是否爲數字類型,若是不是,瀏覽器會調用Number()這個方法將其轉換爲數字,而後在進行檢測。面試
// NaN和誰都不相等,包括它本身 console.log(NaN==NaN) //=> false console.log(NaN==10); //=> false //=> isNaN的檢測機制 console.log(isNaN(6)); //=> false console.log(isNaN('JavaScript')); //=> true /* * 1. 要檢測的值不是數字類型的,首先調用Number()將其轉換爲數字類型,而後再檢測 * Numer("JavaScript") => NaN * 2. isNaN(NaN) =>true */ console.log(isNaN('6')); //=> false /* * 1. 要檢測的值是字符串類型的,因此會調用Number()將其轉換爲數字類型,而後再進行檢測 * Number('6'); => 6 * 2. isNaN(6) => 6是非有效數字嗎?確定不是非有效數字了,因此結果就位false */
將字符創轉換爲數字數組
將字符串轉換爲數字,只要遇到任意非有效數字字符(第一個點除外),結果都是NaN,空字符串轉換爲數字,結果是零
console.log(Number('400')); //=> 400 console.log(Number('400px')); //=> NaN 遇到非有效數字字符,結果就爲NaN console.log(Number('width:400px')); //=> NaN 第一個就是非有效數字字符,因此結果直接是NaN console.log(Number('66.6')); //=> 66.6 第一個點不會被識別爲非有效數字字符 console.log(Number(Number('66.6.6'))); //=> NaN 只有第一個點不會識別非有效數字,第二個點或者連續的兩個點都會被識別爲非有效數字
將布爾類型轉換爲數字瀏覽器
ture 轉換爲數字是1
false 轉換爲數字是0
console.log(Number(false)); //=> 0 console.log(Number(true)); //=> 1 console.log(isNaN(Number(false))); /* * Number(false) => 0 * isNaN(0); => false */
將null & undefined轉換爲數字函數
null 轉換爲數字是0
undefined 轉換爲數字是 NaN
console.log(Number(null)); //=>0 console.log(Number(undefined)); //=>NaN
把引用數據類型轉換爲數字(對象和函數)指針
把引用數據類型轉換爲數字,首先要調用toString()這個方法將其轉換爲字符串,而後再把字符串轉換爲數字
普通對象轉換爲字符串結果是'[object Object]';空數組轉換爲字符串結果是空字符串
code
console.log(Number({name:'小明'})); //=> NaN /* * {name:'小明'}.toString() =>'[object Object]' * Number('[object Object]') => NaN */ console.log(Number([])); //=> 0 空數組轉換爲字符串是空字符串,空字符串轉換爲數字是0 console.log(Number([12,23])); //=> NaN [12,23].toString() =>'12,23' =>Number('12,23') =>NaN
字符串:全部用單引號、雙引號、反引號(ES6中的模板字符串)包裹起來的都是字符串
把其它類型轉換爲字符串對象
let str = 10; console.log(str.toString()) //=> '10' console.log(NaN.toString()); //=> 'NaN' console.log({name:'小明'}.toString()); //=> '[object Object]' console.log(null.toString()); //=> 報錯 Uncaught TypeError: Cannot read property 'toString' of null console.log(undefined.toString()); //=> 報錯 Uncaught TypeError: Cannot read property 'toString' of undefined
字符串拼接ip
在+ - * / %中,除了加法之外,其它的都是數學運算,只有加法可能存在字符串拼接(在加法運算中,一旦遇到字符串就再也不是數學運算了,而是變量了字符串拼接)
console.log('1'+1); //=> '11' console.log('1'-1); //=> 0 把字符換轉換爲數字,而後再進行運算 console.log('5px'-5); /* * '5px'轉換爲數字 => NaN * NaN - 5 => NaN */
一道關於字符串拼接的騰訊面試題
console.log(100 + true + 21.2 + null + undefined + "Tencent" + [] + null + 9 + false); /* * 100 + true => 101 * 101 + 21.2 => 122.2 * 122.2 + null => 122.2 * 122.2 + undefined => NaN * NaN + "Tencent" => "NaNTencent" * "NaNTencent" + [] => "NaNTencent" * "NaNTencent" + null => "NaNTencent" * "NaNTencent" + 9 => "NaNTencent9" * "NaNTencent9" + false => "NaNTencent9false" * */
- 布爾類型只有兩個值:true 和 false
將其它類型值轉換爲布爾類型:只有0、NaN、''、null 和 undefined轉換爲布爾類型是false,其它的轉換爲布爾類型都是true;並且沒有特殊狀況。