關(guān)于JavaScript中的typeof倒源、instanceof苛预、===與==

ECMAScript中的三個基本的操作符,許多細節(jié)雖然不算復(fù)雜笋熬,不好好整理一下也會感覺概念有一些不清晰热某。時常回顧胳螟,以免生疏昔馋。

typeof

typeof 操作符的作用是返還當(dāng)前參數(shù)的數(shù)據(jù)類型,記住以下這幾個稍微特殊的情況糖耸,基本沒有什么大問題秘遏。

typeof 'a'          // string
typeof 1             // number
typeof NaN         // number
typeof function() {}  // function
typeof undefined      // undefined
typeof Symbol()       // symbol ES6新加入的數(shù)據(jù)類型

// 除此之外,其他數(shù)據(jù)類型均返還object
typeof [1]
typeof { a: 5 }
typeof (new Date())
typeof null

值得注意的是嘉竟,typeof null === Oeject 是和我們正常的理解所違背的邦危,據(jù)說這是當(dāng)初開發(fā)ECMAScript的一個失誤,飽受業(yè)界的詬病舍扰。但是我們作為ECMAScript的使用者倦蚪,還是應(yīng)該牢記這一特性。


instanceof

講道理边苹,理解instanceof還是先從定義入手比較合適陵且。

The instanceof operator tests whether an object has in its prototype chain the prototype property of a constructor. 來源:MDN

作為一名英語渣,我一般這么去理解:“后者的 prototype 是否處于前者的原型鏈(這里指隱式原型)上”个束。因此我們可以得出使用instanceof的一個前提條件——后者必須有prototype屬性慕购。
誰有prototype屬性呢?
雖然只有構(gòu)造函數(shù)的prototype才有意義播急,但是JavaScript語言本身并沒有區(qū)別函數(shù)與構(gòu)造函數(shù)的概念脓钾,所以嚴(yán)格意義上來說,有且僅有非原生函數(shù)與原生構(gòu)造函數(shù)可以作為instanceof操作符的后者桩警。


// 非Object數(shù)據(jù)類型可训,皆為false
1 instanceof Object
'str' instanceof Object
true instanceof Object
NaN instanceof Object
undefined instanceof Object


// 雖然typeof null === Oeject是事實標(biāo)準(zhǔn),但很明顯null instanceof Object === false才符合開發(fā)人員的邏輯預(yù)期
null instanceof Object
Object.create(null) instanceof Object

// 任意Object類型的數(shù)據(jù)類型 instanceof Object捶枢,皆為true(除了樓上兩個null)
Boolean instanceof Object     // true
Number instanceof Object      // true
String instanceof Object      // true

// 實例與構(gòu)造函數(shù)的情況
function A () {}
var a = new A()
a instanceof A    // true

=== 與 ==

人們總是覺得=====的區(qū)分很簡單握截,恩,確實很簡單烂叔。

1 == '1'      // true
1 === '1'     // false
// 很簡單對吧谨胞?恩,把下面的也記住了

true == 1    
true == '1'
false == 0
false == '0'    // true

// 上述這四個家伙皆為true蒜鸡,除此之外胯努,誰來都不好使

true == 'true'
false == 'false'
false == null
false == NaN
false == undefined    // false

另外牢裳,我們所討論的=====,有一個重要的前提是——基本數(shù)據(jù)類型叶沛。任何非基本數(shù)據(jù)類型作=====運算蒲讯,比較的都是內(nèi)存地址。換言之灰署,任何兩個非同一引用非基本數(shù)據(jù)類型相比較判帮,皆為false

var a = {}
var b = {}

a === b   // false
a == b    // false
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末溉箕,一起剝皮案震驚了整個濱河市晦墙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌肴茄,老刑警劉巖晌畅,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異独郎,居然都是意外死亡踩麦,警方通過查閱死者的電腦和手機枚赡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門氓癌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人贫橙,你說我怎么就攤上這事贪婉。” “怎么了卢肃?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵疲迂,是天一觀的道長。 經(jīng)常有香客問我莫湘,道長尤蒿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任幅垮,我火速辦了婚禮腰池,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘忙芒。我一直安慰自己示弓,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布呵萨。 她就那樣靜靜地躺著奏属,像睡著了一般。 火紅的嫁衣襯著肌膚如雪潮峦。 梳的紋絲不亂的頭發(fā)上囱皿,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天勇婴,我揣著相機與錄音,去河邊找鬼嘱腥。 笑死咆耿,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的爹橱。 我是一名探鬼主播萨螺,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼愧驱!你這毒婦竟也來了慰技?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤组砚,失蹤者是張志新(化名)和其女友劉穎吻商,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體糟红,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡艾帐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了盆偿。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柒爸。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖事扭,靈堂內(nèi)的尸體忽然破棺而出捎稚,到底是詐尸還是另有隱情,我是刑警寧澤求橄,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布今野,位于F島的核電站,受9級特大地震影響罐农,放射性物質(zhì)發(fā)生泄漏条霜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一涵亏、第九天 我趴在偏房一處隱蔽的房頂上張望宰睡。 院中可真熱鬧,春花似錦溯乒、人聲如沸夹厌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽矛纹。三九已至,卻和暖如春光稼,著一層夾襖步出監(jiān)牢的瞬間或南,已是汗流浹背孩等。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留采够,地道東北人肄方。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像蹬癌,于是被迫代替她去往敵國和親权她。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,233評論 0 4
  • 第1章 JavaScript 簡介 JavaScript 具備與瀏覽器窗口及其內(nèi)容等幾乎所有方面交互的能力逝薪。 歐洲...
    力氣強閱讀 1,128評論 0 0
  • ECMAScript關(guān)鍵字 delete do else finally function in instance...
    doudou2閱讀 719評論 0 0
  • 天際月明如晝 庭院夜宵香久 陣陣桂花襲 遞盞傳杯卷袖 斟酒 斟酒 勿負月迷花誘
    悠游魚閱讀 841評論 2 5
  • 今天搞完電信的卡離吃午飯時間還早隅要,洋洋說肚子餓了,帶他去買了杯鮮榨果汁喝董济,果汁是15塊錢步清,我從錢包里面拿出來一張1...
    王翠英閱讀 172評論 0 0