精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

類型檢查:typeof 和 instanceof 運算符區別?

開發 前端
有時我們需要在 JS 中檢查變量的類型,要怎么做?使用typeof運算符以及instanceof來檢查實例類型。

智米們肯定知道,JS 是種弱類型語言,對變量的類型沒有限制。

例如,如果我們使用字符串類型創建了一個變量,后面又可以為同一變量分配一個數字:

  1. let message = 'Hello'; // 分配一個字符串  
  2. message = 14; // 分配一個數字 

這種動態性為我們提供了靈活性并簡化了變量聲明。

[[356783]]

不好方面,我們永遠不能確保變量包含某種類型的值。例如,以下函數greet(who)需要一個字符串參數,但是,我們可以使用任何類型的參數來調用該函數:

  1. function greet(who) { 
  2.   return `Hello, ${who}!` 
  3.  
  4. greet('World'); // => 'Hello, World!' 
  5. // You can use any type as argument 
  6. greet(true);    // => 'Hello, true!' 
  7. greet([1]);     // => 'Hello, 1!' 

有時我們需要在 JS 中檢查變量的類型,要怎么做?

使用typeof運算符以及instanceof來檢查實例類型。

1. typeof運算符

在 JS 中,基本類型有 String、Number、Boolean和 Symbol 等。此外,還有函數、對象和特殊值undefined和null。

typeof是用于確定 expression 類型的運算符:

  1. const typeAsString = typeof expression; 

expression 的計算結果是我們要查找的類型的值。expression 可以是變量myVariable,屬性訪問器myObject.myProp,函數調用myFunction()或數字 14。

typeof expression,取決于expression的值,結果可能為:'string', 'number', 'boolean', 'symbol', 'undefined', 'object', 'function'。

我們來看看typeof運算符每種類型的情況:

A) String:

  1. const message = 'hello!'
  2. typeof message; // => 'string' 

B) Number:

  1. const number = 5
  2. typeof number; // => 'number' 
  3.  
  4. typeof NaN;    // => 'number' 

C) Boolean:

  1. const ok = true
  2. typeof ok; // => 'boolean' 

D) Symbol:

  1. const symbol = Symbol('key'); 
  2. typeof symbol; // => 'symbol' 

E) undefined:

  1. const nothing = undefined
  2. typeof nothing; // => 'undefined' 

F) Objects:

  1. const object = { name: 'Batman' }; 
  2. typeof object; // => 'object' 
  3.  
  4. const array = [1, 4, 5]; 
  5. typeof array; // => 'object' 
  6.  
  7. const regExp = /Hi/; 
  8. typeof regExp; // => 'object' 

G) Functions:

  1. function greet(who) { 
  2.   return `Hello, ${who}!` 
  3.  
  4. typeof greet; // => 'function' 

1.1 typeof null

如上我們看到的,用 typeof 判斷對象結果是 'object'。

但是,typeof null也會計算為'object'!

  1. const missingObject = null
  2. typeof missingObject; // => 'object' 

typeof null為'object'是 JS 初始實現中的一個錯誤。

因此,在使用typeof檢測對象時,需要另外檢查null:

  1. function isObject(object) { 
  2.   return typeof object === 'object' && object !== null; 
  3.  
  4. isObject({ name: 'Batman' }); // => true 
  5. isObject(15);                 // => false 
  6. isObject(null);               // => false 

1.2 typeof 和未定義的變量

雖然typeof expression通常決定于expression的類型,但也可以使用typeof來確定是否定義了變量。

  1. // notDefinedVar is not defined 
  2. notDefinedVar; // throws ReferenceError 

typeof有一個不錯的屬性,當typeof評估未定義變量的類型時,不會引發 ReferenceError 錯誤:

  1. // notDefinedVar is not defined 
  2. typeof notDefinedVar; // => 'undefined' 

變量notDefinedVar沒有在當前作用域內定義。然而,typeof notDefinedVar不會拋出引用錯誤,而是將結果計算為 'undefined'。

我們可以使用typeof來檢測是否未定義變量,如果typeof myVar === 'undefined' 為 true, 則 myVar 未定義。

2. instanceof 運算符

使用 JS 函數的通常方法是通過在其名稱后添加一對括號來調用它:

  1. function greet(who) { 
  2.   return `Hello, ${who}!`; 
  3.  
  4. greet('World'); // => 'Hello, World!' 

greet('World')是常規函數調用。

JS 函數可以做更多的事情:它們甚至可以構造對象!要使函數構造對象,只需在常規函數調用之前使用new關鍵字:

  1. function Greeter(who) { 
  2.   this.message = `Hello, ${who}!`; 
  3.  
  4. const worldGreeter = new Greeter('World'); 
  5. worldGreeter.message; // => 'Hello, World!' 

new Greeter('World')是創建實例worldGreeter的構造函數調用。

如何檢查 JS 是否使用特定構造函數創建了特定實例?使用 instanceof 運算符:

  1. const bool = object instanceof Constructor; 

其中object是對對象求值的表達式,而Constructor是構造對象的類或函數,instanceof計算為布爾值。

worldGreeter實例是使用Greeter構造函數創建的,因此worldGreeter instanceof Greeter計算結果為true。

從ES6 開始,可以使用 class 來定義對象。例如,定義一個類Pet,然后創建它的一個實例myPet:

  1. class Pet { 
  2.   constructor(name) { 
  3.     this.name = name; 
  4.   } 
  5.  
  6. const myPet = new Pet('Lily'); 

new Pet('Lily')是創建實例myPet的構造調用。

由于myPet是使用Pet類構造的-const myPet = new Pet('Lily'), 所以 myPet instanceof Pet 的結果為 true:

  1. myPet instanceof Pet; // => true 

但是,普通對象不是Pet的實例:

  1. const plainPet = { name: 'Zoe' }; 
  2. plainPet instanceof Pet; // => false 

我們發現instanceof對于確定內置的特殊實例(如正則表達式、數組)很有用:

  1. function isRegExp(value) { 
  2.   return value instanceof RegExp; 
  3. isRegExp(/Hello/); // => true 
  4. isRegExp('Hello'); // => false 
  5.  
  6. function isArray(value) { 
  7.   return value instanceof Array; 
  8. isArray([1, 2, 3]); // => true 
  9. isArray({ prop: 'Val' }); // => false 

2.1 instanceof 和父類

現在,Cat 擴展了父類Pet:

  1. class Cat extends Pet { 
  2.   constructor(name, color) { 
  3.     super(name); 
  4.     this.color = color; 
  5.   } 
  6.  
  7. const myCat = new Cat('Callie', 'red'); 

不出所料,myCat是Cat類的實例:

  1. myCat instanceof Pet; // => true 

但同時,myCat也是基類Pet的一個實例:

  1. myCat instanceof Pet; // => true 

3. 總結

JS 是一種弱類型的語言,這意味著對變量的類型沒有限制。

typeof expression可以用來查看 expression 的類型,結果是可能是其中的一個:'string', 'number', 'boolean', 'symbol', 'undefined', 'object', 'function'。

typeof null的值為'object',因此使用typeof檢測對象的正確方法是typeof object ==='object'&& object!== null。

instanceof運算符讓我們確定實例的構造函數。如果object是Constructor的實例,則object instanceof Constructor為true。

本文轉載自微信公眾號「大遷世界」,可以通過以下二維碼關注。轉載本文請聯系大遷世界公眾號。

 

責任編輯:趙寧寧 來源: 大遷世界
相關推薦

2025-02-07 00:12:34

C#編程as

2015-06-09 10:55:58

JavaScriptinstanceof運

2025-01-24 08:32:00

運算符C#

2023-03-01 15:18:01

JavaScripttypeof運算符

2016-08-03 17:23:47

javascripthtml前端

2025-02-24 11:16:20

2009-06-21 13:48:05

ShellLinux運算符

2015-12-24 10:05:39

JavaScripttypeofinstanceof

2010-03-05 10:04:38

Python運算符

2023-11-01 08:08:47

PythonIS運算符

2009-08-11 15:51:08

C#運算符算術運算符

2024-02-26 15:17:20

2013-08-15 16:48:39

.Net基礎

2017-05-11 16:38:07

javascript邏輯運算符

2021-10-19 22:23:05

typeof方式Instanceof

2021-05-09 22:00:59

TypeofInstanceof運算符

2009-08-12 15:02:49

C#賦值運算符簡單賦值運算符

2009-08-12 15:20:18

C#賦值運算符復合賦值運算符

2023-04-10 08:58:13

C#關系運算符

2009-11-18 09:02:55

PHP運算符
點贊
收藏

51CTO技術棧公眾號

日本成人超碰在线观看| 国产尤物久久久| 一区二区三区在线视频免费观看 | 男人添女人下部视频免费| 亚洲成熟女性毛茸茸| 新狼窝色av性久久久久久| 在线看福利67194| 女同性αv亚洲女同志| 欧美人体一区二区三区| 综合亚洲深深色噜噜狠狠网站| 操人视频欧美| 中文字幕 日韩有码| 国内精品美女在线观看| 国产一区二区三区丝袜 | 国产精品无码一区二区桃花视频| 伊人激情综合| 日韩视频―中文字幕| 中文在线永久免费观看| 日本一区二区中文字幕| 精品久久久久久久中文字幕| 一本色道婷婷久久欧美| 日韩av资源| 激情五月婷婷综合| 2018日韩中文字幕| 一区二区视频免费看| 亚洲美女久久| 亚洲精品456在线播放狼人| 欧美性猛交久久久乱大交小说| 三级资源在线| 18成人在线视频| 午夜精品一区二区在线观看的 | 国产一区二区三区精品在线观看 | 亚洲精品亚洲人成在线| 欧美一级片免费看| 一区二区三区网址| 吞精囗交69激情欧美| 亚洲亚洲人成综合网络| 超碰免费在线公开| 色欧美激情视频在线| 久久综合给合久久狠狠狠97色69| 国产精品久久久对白| 亚洲av无码乱码国产麻豆| 国内精品免费**视频| 国产欧美在线视频| 亚洲精品国产精品国自产网站按摩| 国产亚洲高清视频| 97视频在线观看播放| 国产一级在线观看视频| 欧美日韩视频| 欧美激情按摩在线| 日韩欧美中文字幕视频| 欧美88av| 欧美精品videossex性护士| 在线观看成人毛片| 欧美片第1页综合| 欧美激情在线狂野欧美精品| 欧美交换国产一区内射| 欧美日韩一区二区高清| 欧美极品少妇xxxxⅹ免费视频| 久久久久久免费观看| 亚洲欧美亚洲| 久久久久日韩精品久久久男男| 久久精品性爱视频| 一区二区三区国产盗摄| 欧美在线免费观看| 久草热在线观看| 伊人亚洲精品| 国产.精品.日韩.另类.中文.在线.播放| 国产日韩欧美影视| 亚洲中文一区二区三区| 黄页视频在线91| 91超碰rencao97精品| av在线亚洲天堂| 丰满少妇久久久久久久| 精品国产乱码久久久久软件| 五月天激情婷婷| 久久精品亚洲精品国产欧美| 日韩欧美视频第二区| 麻豆网站在线看| 亚洲精品免费播放| 久久亚洲中文字幕无码| 日韩美女在线看免费观看| 欧美在线观看视频一区二区| 日本美女视频一区| 综合激情网...| 亚洲免费影视第一页| 91香蕉视频污在线观看| 午夜国产精品视频免费体验区| 国内精品久久久久| 一级片在线免费播放| 国产麻豆精品theporn| 韩国精品一区二区三区六区色诱| 国际av在线| 亚洲激情图片qvod| 妞干网在线免费视频| 最新欧美电影| 亚洲电影av在线| 久久久久久国产免费a片| 中文字幕一区二区av| 91成人在线播放| 99在线观看免费| 久久精品人人做| 又大又硬又爽免费视频| 久久不卡日韩美女| 日韩精品福利网站| 国精产品一区一区| 国产视频欧美| 成人精品一二区| 番号在线播放| 午夜成人免费电影| 日批视频在线看| 成人精品视频| 欧美亚洲日本黄色| www.久久色| 国产精品麻豆久久久| 欧美视频第一区| 一区二区三区高清在线观看| 色悠悠久久久久| 国产精品熟女视频| 99久久99久久精品免费看蜜桃| 在线无限看免费粉色视频| 成人性生活视频| 精品粉嫩aⅴ一区二区三区四区| av最新在线观看| 天堂av在线一区| 久久久久成人精品免费播放动漫| 中文av资源在线| 在线成人av网站| 91资源在线播放| 美女精品网站| 久久天堂国产精品| а√在线中文在线新版| 欧美www视频| 国产女人被狂躁到高潮小说| 精品一区二区三区在线视频| 亚洲 国产 日韩 综合一区| 麻豆免费在线| 亚洲国产精品成人va在线观看| 一级黄色录像视频| 国产精品18久久久久| 男人的天堂成人| 狂野欧美性猛交xxxx| 亚洲女人天堂网| 亚洲天堂一区在线| 99久久亚洲一区二区三区青草 | 亚洲自拍偷拍网| 国产啪精品视频网站| 最新国产在线观看| 欧美日韩在线播放三区四区| 无码一区二区三区在线| 久久精品国语| 五月天国产一区| 久久免费影院| 久久久国产在线视频| 国产日韩欧美中文字幕| 亚洲嫩草精品久久| 亚洲成人激情小说| 欧美一区二区三区免费看| 亚洲sss综合天堂久久| 亚洲欧美成人影院| 亚洲成人精品av| 成年人免费高清视频| 久久久久9999亚洲精品| 狠狠躁狠狠躁视频专区| 婷婷丁香综合| 国产成人看片| 成人影院网站| 中文字幕亚洲无线码在线一区| 在线免费观看高清视频| 亚洲精品亚洲人成人网在线播放| 风韵丰满熟妇啪啪区老熟熟女| 最新日韩av| 美国av一区二区三区| 成人啊v在线| 久久精品夜夜夜夜夜久久| 精品人妻无码一区二区 | 精品国产青草久久久久96| 亚洲人123区| 香港三级日本三级| 青青草成人在线观看| 九一免费在线观看| 亚洲精品3区| 亚洲一区二区久久久久久| heyzo高清在线| 永久免费毛片在线播放不卡| 国产男女无套免费网站| 精品免费在线观看| 秋霞欧美一区二区三区视频免费| proumb性欧美在线观看| 日日躁夜夜躁aaaabbbb| 伊人久久综合| 欧美重口乱码一区二区| 日韩一区二区三区高清在线观看| 欧美性一区二区三区| 黄a在线观看| 日韩精品欧美国产精品忘忧草 | 黄色小视频在线免费看| 国产欧美日韩综合| 97中文字幕在线观看| 日本美女一区二区三区视频| 成年人网站国产| 日韩综合在线| 欧美精品欧美精品| 一区中文字幕| 国产综合在线观看视频| 中文不卡1区2区3区| 另类色图亚洲色图| 成年人视频在线看| 亚洲国产中文字幕久久网| 97久久人国产精品婷婷| 在线中文字幕不卡| 日本熟女一区二区| 亚洲精选视频在线| 久久久久人妻一区精品色| 91偷拍与自偷拍精品| 麻豆免费在线观看视频| 久久99国产精品成人| 88av.com| 亚洲欧美久久| 黄色大片在线免费看| 亚洲乱码精品| 一区二区不卡在线| 欧洲激情综合| 欧美乱偷一区二区三区在线| 成人高潮视频| 91在线观看欧美日韩| 日韩一区中文| 国产精品欧美日韩一区二区| 69久成人做爰电影| 91成人免费观看网站| 97人澡人人添人人爽欧美| 欧美日韩成人网| av在线官网| 欧美第一淫aaasss性| 在线免费观看的av| 欧美剧在线观看| 亚洲综合图区| 欧美xxxx做受欧美| 日韩av激情| 欧美大片在线看免费观看| av免费在线免费| 久久精品2019中文字幕| 免费观看成人高潮| 久久久成人精品视频| 国产激情小视频在线| 久久国产天堂福利天堂| av网站在线看| 欧美激情乱人伦一区| segui88久久综合| 午夜精品美女自拍福到在线| 波多野结衣在线播放| 97在线免费视频| 日韩伦理在线一区| 日本成熟性欧美| 久久久成人av毛片免费观看| 国产精品激情av电影在线观看 | 欧美一级二级三级| 久久综合欧美| 亚洲精品视频一二三| 亚洲精品成人影院| 精品国偷自产一区二区三区| 日韩一级欧洲| 免费看a级黄色片| 精久久久久久久久久久| 免费在线观看日韩av| 91免费观看视频在线| 免费黄色片网站| 亚洲柠檬福利资源导航| 久草精品视频在线观看| 色老综合老女人久久久| 一区二区视频网站| 日韩精品中文字幕一区二区三区| 日韩一区二区三区在线观看视频| 亚洲开心激情网| 黄色网址在线免费播放| 国内偷自视频区视频综合| 新片速递亚洲合集欧美合集| 成人羞羞国产免费| 欧美日韩麻豆| 亚洲午夜高清视频| 亚洲视频免费| 亚洲性生活网站| 国产91精品露脸国语对白| 老熟妇一区二区| 一级女性全黄久久生活片免费| 天天综合网久久综合网| 欧美精品国产精品| 偷拍自拍在线| 欧美成人合集magnet| 日本美女一区| 亚洲直播在线一区| 中文有码一区| 美女av免费观看| 日韩和欧美一区二区三区| 亚洲911精品成人18网站| 久久毛片高清国产| 欧美日韩在线视频免费| 日本乱码高清不卡字幕| 亚洲精品无码专区| 色一区av在线| 欧美片第一页| 国产一区二区三区色淫影院| 欧美韩国日本在线观看 | 国产主播在线观看| 欧美精品v国产精品v日韩精品 | 久久理论片午夜琪琪电影网| 成人看片毛片免费播放器| 精品国产乱码久久久久久丨区2区 精品国产乱码久久久久久蜜柚 | 欧美一区1区三区3区公司| 欧美黄在线观看| 午夜免费看视频| 久久综合色婷婷| 国产精品18p| 538在线一区二区精品国产| 九一在线视频| 77777亚洲午夜久久多人| 日韩不卡在线视频| 中文字幕不卡每日更新1区2区| 久久一区二区三区超碰国产精品| 香港三日本8a三级少妇三级99| 亚洲欧美另类久久久精品| 一区二区视频免费| 一个人看的www久久| 爱情电影社保片一区| 国产伦一区二区三区色一情| 午夜国产精品视频| 五月六月丁香婷婷| 国产精品狼人久久影院观看方式| 无码人妻av一区二区三区波多野 | 久久人妻一区二区| 亚洲高清视频在线| 性欧美8khd高清极品| 久久综合色88| 国产精品久久久久久久久久久久久久久 | 99久久国产热无码精品免费| 少妇久久久久久| av成人在线看| 亚洲欧洲一区二区在线观看| 日韩 欧美一区二区三区| 蜜桃无码一区二区三区| 色先锋资源久久综合| 毛片免费在线观看| 55夜色66夜色国产精品视频| 日韩电影不卡一区| 日韩av资源在线| 国产亚洲污的网站| 最好看的日本字幕mv视频大全 | 日韩欧美一起| 99re视频在线观看| 精品91视频| 国产激情视频网站| 欧美性猛交丰臀xxxxx网站| 欧美一区二区少妇| 国产精品com| 欧美丰满老妇| 国产一精品一aⅴ一免费| 亚洲国产aⅴ天堂久久| 亚洲av成人精品毛片| 国产成人精品免费久久久久| 欧美色网址大全| 亚洲制服中文字幕| 亚洲一区二区三区四区在线免费观看| 亚洲国产中文字幕在线| 78色国产精品| 欧美日韩中文字幕一区二区三区| 色婷婷.com| 一区二区三区成人在线视频| 神马午夜一区二区| 国产精品户外野外| 欧美a级在线| 亚洲中文字幕无码av| 欧美最猛性xxxxx直播| 黄色网址免费在线观看| 福利精品视频| 日韩精品一级中文字幕精品视频免费观看 | 国产精品区在线观看| 欧美高清自拍一区| 蜜桃国内精品久久久久软件9| 中文字幕av不卡在线| 亚洲综合免费观看高清完整版| 香蕉视频黄色片| 国产精品无av码在线观看| 欧美日韩午夜| 亚洲国产av一区| 欧美一级欧美三级| 91精品xxx在线观看| 日韩欧美一级在线| 久久精品网站免费观看| 国产哺乳奶水91在线播放| 69久久夜色精品国产7777| 国产精品99久久久久久动医院| 在线免费看黄色片| 欧美亚洲国产bt| 蜜臀av在线| 亚洲乱码一区二区三区| 成人免费的视频| 一级黄色片网站| 欧美一区二区三区精品电影| 91久久国产| 一卡二卡三卡四卡|