国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JavaScript標準對象_動力節點Java學院整理

2024-05-06 15:15:19
字體:
來源:轉載
供稿:網友

在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還提供了包裝對象,熟悉Java的小伙伴肯定很清楚int和Integer這種曖昧關系。
number、boolean和string都有包裝對象。沒錯,在JavaScript中,字符串也區分string類型和它的包裝類型。包裝對象用new創建:

var n = new Number(123); // 123,生成了新的包裝類型var b = new Boolean(true); // true,生成了新的包裝類型var s = new String('str'); // 'str',生成了新的包裝類型

雖然包裝對象看上去和原來的值一模一樣,顯示出來也是一模一樣,但他們的類型已經變為object了!所以,包裝對象和原始值用===比較會返回false:

typeof new Number(123); // 'object'new Number(123) === 123; // falsetypeof new Boolean(true); // 'object'new Boolean(true) === true; // falsetypeof new String('str'); // 'object'new String('str') === 'str'; // false

所以閑的蛋疼也不要使用包裝對象!尤其是針對string類型!!!
如果我們在使用Number、Boolean和String時,沒有寫new會發生什么情況?
此時,Number()、Boolean和String()被當做普通函數,把任何類型的數據轉換為number、boolean和string類型(注意不是其包裝類型):

var n = Number('123'); // 123,相當于parseInt()或parseFloat()typeof n; // 'number'var b = Boolean('true'); // truetypeof b; // 'boolean'var b2 = Boolean('false'); // true! 'false'字符串轉換結果為true!因為它是非空字符串!var b3 = Boolean(''); // falsevar s = String(123.45); // '123.45'typeof s; // 'string'

是不是感覺頭大了?這就是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'。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 永寿县| 搜索| 确山县| 鄂托克旗| 玉屏| 齐齐哈尔市| 三门县| 砀山县| 阳新县| 长兴县| 彝良县| 宝山区| 曲阳县| 盱眙县| 绥宁县| 察雅县| 谷城县| 台东县| 平和县| 西昌市| 普兰店市| 灵山县| 南汇区| 离岛区| 桦南县| 阿图什市| 义乌市| 菏泽市| 秦皇岛市| 乐安县| 永泰县| 武川县| 邯郸县| 邹城市| 驻马店市| 杭锦后旗| 中方县| 英德市| 库尔勒市| 无极县| 兴化市|