[每日一題]面試官問:for in和for of 的區(qū)別和原理鹦肿?

關(guān)注「松寶寫代碼」逼泣,精選好文药磺,每日一題

?時間永遠(yuǎn)是自己的

每分每秒也都是為自己的將來鋪墊和增值

作者:saucxs | songEagle

一告组、前言

2020.12.23 日剛立的 flag,每日一題癌佩,題目類型不限制木缝,可以是:算法題,面試題驼卖,闡述題等等氨肌。

本文是「每日一題」第 7 題:[每日一題]面試官問:for in和for of 的區(qū)別和原理?

[圖片上傳失敗...(image-c31793-1611497864155)]

往期「每日一題」:

二贩虾、for in和for of 的區(qū)別和原理催烘?

這個題目本身不是特別難,只能說是作為社招的基礎(chǔ)面試題缎罢,但是如果想回答好這道題也不是很容易伊群。

不信接著往下看:

1、簡單回答

很多人會去問:for in 和for of的區(qū)別策精,

我說:for in是獲取屬性名舰始,for of獲取屬性值。

2咽袜、看一些例子

首先我們先看一個對象遍歷的例子

var obj = {name: 'saucxs',age: 21,sex: 1};
for(key in obj){
    console.log(key, obj[key]);
    // name saucxs
    // age 21
    // sex 1
}
for(key of obj){
    console.log(key, obj[key]);
    // typeError :obj is not iterable報錯
}

說明obj對象沒有iterable屬性報錯丸卷,使用不了for of。

我們現(xiàn)在再看一個數(shù)組遍歷的例子

var array = ['a','b','c'];
for(var key in array){
    console.log(key, array[key]);
    // 0 a
    // 1 b
    // 2 c
}
for(var key of array){
    console.log(key, array[key]);
    // a undefined
    // b undefined
    // c undefined
}

這回沒有報錯询刹,為什么呢谜嫉?

我們再看一個例子:

var array = ['a', 'b', 'c'];
array.name = 'saucxs'
for(key in array){
    console.log(key, array[key])
    // 0 a
    // 1 b
    // 2 c
    // name saucxs
}

3、for in的特點

for in 循環(huán)返回的值都是數(shù)據(jù)結(jié)構(gòu)的鍵名凹联。

遍歷對象返回的是對象的key值沐兰,遍歷數(shù)組返回的是數(shù)組的下標(biāo)。

還會遍歷原型上的值和手動添加的值

總的來說:for in適合遍歷對象蔽挠。

4住闯、for of的特點

for of 循環(huán)獲取一對鍵值中的鍵值煌珊。

一個數(shù)據(jù)結(jié)構(gòu)只要部署了Symbol.iterator屬性钾麸,就被視為具有iterator接口,可以使用for of踱葛。

for of不同于forEach偶惠,for of是可以break春寿,continue,return配合使用忽孽,for of 循環(huán)可以隨時退出循環(huán)绑改。

總的來說:for of遍歷所有數(shù)據(jù)結(jié)構(gòu)的統(tǒng)一接口。

5兄一、深入探索

哪些數(shù)據(jù)結(jié)構(gòu)部署了Symbol.iterator屬性厘线?

以下數(shù)據(jù)結(jié)構(gòu)的有iterator接口的:

  • 數(shù)組Array
  • Map
  • Set
  • String
  • arguments對象
  • Nodelist對象,類數(shù)組
    凡是部署了iterator接口的數(shù)據(jù)結(jié)構(gòu)都可以使用數(shù)組的擴展運算符(...)出革,和解構(gòu)賦值等操作造壮。

如果我非常想讓對象用for of?

可以使用Object.keys()獲取對象的key值集合,在用for of耳璧。

var obj = {name: 'saucxs',age: 18, sex: 1};
for(var key of Object.keys(obj)){
    console.log(key, obj[key]);
    // name saucxs
    // age 21
    // sex 1
}

這樣也可以給一個對象部署Symbol.iterator屬性成箫。

謝謝支持

1、文章喜歡的話可以「分享旨枯,點贊蹬昌,在看」三連哦。

2攀隔、作者昵稱:saucxs皂贩,songEagle,松寶寫代碼昆汹∶魉ⅲ「松寶寫代碼」公眾號作者,每日一題筹煮,實驗室等遮精。一個愛好折騰,致力于全棧败潦,正在努力成長的字節(jié)跳動工程師本冲,星辰大海,未來可期劫扒。內(nèi)推字節(jié)跳動各個部門各個崗位檬洞。

3、長按下面圖片沟饥,關(guān)注「松寶寫代碼」添怔,是獲取開發(fā)知識體系構(gòu)建,精選文章贤旷,項目實戰(zhàn)广料,實驗室,每日一道面試題幼驶,進(jìn)階學(xué)習(xí)艾杏,思考職業(yè)發(fā)展,涉及到JavaScript盅藻,Node购桑,Vue,React氏淑,瀏覽器勃蜘,http,算法假残,端相關(guān)缭贡,小程序等領(lǐng)域,希望可以幫助到你,我們一起成長~

[圖片上傳失敗...(image-94f541-1611497864155)]

字節(jié)內(nèi)推福利

  • 回復(fù)「校招」獲取內(nèi)推碼
  • 回復(fù)「社招」獲取內(nèi)推
  • 回復(fù)「實習(xí)生」獲取內(nèi)推

后續(xù)會有更多福利

學(xué)習(xí)資料福利

回復(fù)「算法」獲取算法學(xué)習(xí)資料

往期「每日一題」

1匀归、JavaScript && ES6

2夯秃、瀏覽器

3、Vue

4介陶、HTML5

5色建、算法

6驾锰、Node

7走越、Http

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子赏酥,更是在濱河造成了極大的恐慌喳整,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件裸扶,死亡現(xiàn)場離奇詭異框都,居然都是意外死亡,警方通過查閱死者的電腦和手機呵晨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門魏保,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人摸屠,你說我怎么就攤上這事谓罗。” “怎么了季二?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵檩咱,是天一觀的道長。 經(jīng)常有香客問我胯舷,道長刻蚯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任需纳,我火速辦了婚禮芦倒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘不翩。我一直安慰自己兵扬,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布口蝠。 她就那樣靜靜地躺著器钟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪妙蔗。 梳的紋絲不亂的頭發(fā)上傲霸,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天,我揣著相機與錄音眉反,去河邊找鬼昙啄。 笑死,一個胖子當(dāng)著我的面吹牛寸五,可吹牛的內(nèi)容都是我干的梳凛。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼梳杏,長吁一口氣:“原來是場噩夢啊……” “哼韧拒!你這毒婦竟也來了淹接?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤叛溢,失蹤者是張志新(化名)和其女友劉穎塑悼,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體楷掉,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡厢蒜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了靖诗。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片郭怪。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖刊橘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情颂鸿,我是刑警寧澤促绵,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站嘴纺,受9級特大地震影響败晴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜栽渴,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一尖坤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧闲擦,春花似錦慢味、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至寞忿,卻和暖如春驰唬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背腔彰。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工叫编, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人霹抛。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓搓逾,卻偏偏與公主長得像,于是被迫代替她去往敵國和親上炎。 傳聞我的和親對象是個殘疾皇子恃逻,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,925評論 2 344

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