JavaScript標準對象的一點規則

爲了區分對象的類型,我們用typeof操作符獲取對象的類型,它總是返回一個字符串:

typeof 123; // 'number'
typeof NaN; // 'number'
typeof 'str'; // 'string'
typeof true; // 'boolean'
typeof undefined; // 'undefined'
typeof Math.abs; // 'function'
typeof null; // 'object'
typeof []; // 'object'
typeof {}; // 'object'

可見,number、string、boolean、function和undefined有別於其他類型。特別注意null的類型是object,Array的類型也是object,我們用typeof將無法區分出null、Array和通常意義上的object——{}。

對了,JavaScript也提供包裝類型,但是打死都不要用


  • 不要使用new Number()、new Boolean()、new String()創建包裝對象;
  • 用parseInt()或parseFloat()來轉換任意類型到number;
  • 用String()來轉換任意類型到string,或者直接調用某個對象的toString()方法;
  • 通常不必把任意類型轉換爲boolean再判斷,因爲可以直接寫if (myVar) {…};
  • typeof操作符可以判斷出number、boolean、string、function和undefined;
  • 判斷Array要使用Array.isArray(arr);
  • 判斷null請使用myVar === null;
  • 判斷某個全局變量是否存在用typeof window.myVar === ‘undefined’;
  • 函數內部判斷某個變量是否存在用typeof myVar === ‘undefined’

任何對象都有toString()方法嗎?null和undefined就沒有!確實如此,這兩個特殊值要除外,雖然null還僞裝成了object類型。

number對象調用toString()報SyntaxError:

123.toString(); // SyntaxError

遇到這種情況,要特殊處理一下:

123..toString(); // '123', 注意是兩個點!
(123).toString(); // '123'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章