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

首頁 > 語言 > JavaScript > 正文

JavaScript中的類型檢查

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

JS 的動態類型有好有壞。好的一面,不必指明變量的類型。不好的是,咱們永遠無法確定變量的類型。

typeof運算符可以確定 JS 中的6種類型:

typeof 10;    // => 'number'typeof 'Hello';  // => 'string'typeof false;   // => 'boolean'typeof { a: 1 }; // => 'object'typeof undefined; // => 'undefined'typeof Symbol(); // => 'symbol'

同樣,instanceof 運算符用于檢測構造函數的 prototype 屬性是否出現在某個實例對象的原型鏈上。

class Cat { }const myCat = new Cat();myCat instanceof Cat; // => true

但是typeof和instanceof的一些行為可能會令人混淆。防范于未然,咱們需要提前了解一些邊緣情況。

1. typeof null

typeof myObject === 'object'會告知myObject是否是一個對象類型。舉個例子:

const person = { name: '前端小智' };typeof person; // => 'object'

typeof person是'object',因為person是一個普通的 JS 對象。

在某場景下,變量值可能需要指定為 null,下面是一些場景:

可以使用null來跳過指示配置對象
使用null初始化稍后要保存對象的變量
當函數由于某種原因無法構造對象時,返回null
例如,如果不存在正則表達式匹配項,則str.match(regExp)方法返回null:

const message = 'Hello';message.match(/Hi/); // => null

這里引出一個問題,可以使用typeof 來區分有值的對象和具有 null 值的對象嗎?

let myObject = null;typeof myObject; // => 'object'myObject = { prop: 'Value' };typeof myObject; // => 'object'

從上面可以看出,typeof 對象有值的對象和具有 null 值的對象,得到的結果都是'object'。

可以如下面方法來檢測變量是否有對象且不是null:

function isObject(value) { return typeof value === 'object' && value !== null;}isObject({});  // => trueisObject(null); // => false

除了檢查value是否為object: typeof value === 'object'之外,還需要明確地驗證null: value !== null。

2. typeof array

如果試圖檢測一個變量是否包含一個數組,常見的錯誤就是使用typeof操作符:

const colors = ['white', 'blue', 'red'];typeof colors; // => 'object'

檢測數組的正確方法是使用Array.isArray():

const colors = ['white', 'blue', 'red'];const hero = { name: 'Batman' };Array.isArray(colors); // => trueArray.isArray(hero);  // => false

Array.isArray(colors)返回一個布爾值true,表示colors是一個數組。

3.虛值類型檢查

JS中的undefined是一個特殊值,表示未初始化的變量。

如果試圖訪問未初始化的變量、不存在的對象屬性,則獲取到的值為 undefined :

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 宿州市| 彰化县| 沿河| 益阳市| 沙河市| 遂溪县| 武川县| 苍溪县| 景洪市| 家居| 微博| 科技| 紫阳县| 黄平县| 都昌县| 吉林省| 乳源| 镇江市| 赤水市| 从化市| 女性| 常熟市| 茂名市| 北流市| 三都| 通海县| 西畴县| 平阴县| 灵武市| 尼玛县| 铜梁县| 湖南省| 凤城市| 江华| 会泽县| 正宁县| 二连浩特市| 漳州市| 桓台县| 漾濞| 石屏县|