亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

js for of 無法改變數(shù)組變量

hover_lew / 3464人閱讀

摘要:今天寫個(gè)函數(shù)時(shí)想遍歷數(shù)組,想想沒怎么用過這類的語法,于是做了個(gè)嘗試,竟發(fā)現(xiàn)無法改變數(shù)組元素。這里我們可以看到的本質(zhì)是返回一個(gè)迭代器第三,迭代器是如何獲得值的迭代器通過方法返回值,而不是指向地址,所以在迭代中無法改變數(shù)組元素參考材料

今天寫個(gè)函數(shù)時(shí)想遍歷數(shù)組,想想沒怎么用過for...of...這類的語法,于是做了個(gè)嘗試,竟發(fā)現(xiàn)for...of...無法改變數(shù)組元素。

貼代碼,上例子

let array = [1,2,3];
for(let num of array){
    num++;
    console.log(num);
}
console.log(array);
//輸出如下
//2
//3
//4
//[1,2,3]

這是為什么呢,暫時(shí)找不到答案
那么for...in...會(huì)不會(huì)呢?

于是又試試for...in...語法
代碼如下

let obj = {
std1 : "Bob",
std2 : "Mike"
}
for(let name in obj){
    obj[name] = "Lily";
    console.log(obj[name]);
}
console.log(obj);
//顯示如下
//"Lily"
//"Lily"
//{std1:"Lily", std2:"Lily"}

。。。。。
留個(gè)坑,以后看能不能找到為什么。
后來找出解釋,不知是否正確,如下:
以下是個(gè)人推斷,有錯(cuò)誤請(qǐng)指出

第一,先看看MDN的可迭代協(xié)議

以下是MDN的可迭代協(xié)議:
“可迭代協(xié)議允許 JavaScript 對(duì)象去定義或定制它們的迭代行為, 例如(定義)在一個(gè) for..of 結(jié)構(gòu)中什么值可以被循環(huán)(得到)。一些內(nèi)置類型都是內(nèi)置的可迭代對(duì)象并且有默認(rèn)的迭代行為, 比如 Array or Map, 另一些類型則不是 (比如Object) 。”
這里我們注意到Array和MapObject的迭代行為是不一樣的

第二,看看對(duì)象被迭代的本質(zhì)

另一段材料:
“當(dāng)一個(gè)對(duì)象需要被迭代的時(shí)候(比如開始用于一個(gè)for..of循環(huán)中),它的@@iterator方法被調(diào)用并且無參數(shù),然后返回一個(gè)用于在迭代中獲得值的迭代器?!?/b>
重點(diǎn)在于“返回一個(gè)用于在迭代中獲得值的迭代器?!?/b>
這里我們可以看到for of 的本質(zhì)是返回一個(gè)迭代器

第三,迭代器是如何獲得值的?

迭代器通過next()方法返回值,而不是指向地址,所以在for of 迭代中無法改變數(shù)組元素

參考材料:https://developer.mozilla.org...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/96376.html

相關(guān)文章

  • 【面試篇】寒冬求職季之你必須要懂的原生JS(上)

    摘要:循環(huán)可以使用的范圍包括數(shù)組和結(jié)構(gòu)某些類似數(shù)組的對(duì)象對(duì)象,以及字符串。只能遍歷數(shù)組,不能中斷,返回值是修改后的數(shù)組。除了之外,等,也有同樣的問題。聲明一個(gè)只讀的常量。這在語法上,稱為暫時(shí)性死區(qū)。暫時(shí)性死區(qū)也意味著不再是一個(gè)百分百安全的操作。 互聯(lián)網(wǎng)寒冬之際,各大公司都縮減了HC,甚至是采取了裁員措施,在這樣的大環(huán)境之下,想要獲得一份更好的工作,必然需要付出更多的努力。 一年前,也許你搞清楚閉包...

    AlphaWatch 評(píng)論0 收藏0
  • 【面試篇】寒冬求職季之你必須要懂的原生JS(上)

    摘要:只能遍歷數(shù)組,不能中斷,返回值是修改后的數(shù)組。這在語法上,稱為暫時(shí)性死區(qū)。作用域鏈無論是還是查詢,都會(huì)在當(dāng)前的作用域開始查找,如果沒有找到,就會(huì)向上級(jí)作用域繼續(xù)查找目標(biāo)標(biāo)識(shí)符,每次上升一個(gè)作用域,一直到全局作用域?yàn)橹埂? 互聯(lián)網(wǎng)寒冬之際,各大公司都縮減了HC,甚至是采取了裁員措施,在這樣的大環(huán)境之下,想要獲得一份更好的工作,必然需要付出更多的努力。 一年前,也許你搞清楚閉包,this,原...

    寵來也 評(píng)論0 收藏0
  • JavaScript 語言核心筆記(持續(xù)更新)

    摘要:在同一個(gè)塊內(nèi),不允許用重復(fù)聲明變量。中為新增了塊級(jí)作用域。自帶遍歷器的對(duì)象有數(shù)組字符串類數(shù)組對(duì)象對(duì)象的對(duì)象等和結(jié)構(gòu)對(duì)象。返回一個(gè)遍歷器,使遍歷數(shù)組的鍵值對(duì)鍵名鍵值。 目錄 1.語法 2.類型、值和變量 3.表達(dá)式和運(yùn)算符 4.語句 5.數(shù)組 6.對(duì)象 7.函數(shù) 8.全局屬性和方法 9.詞法作用域、作用域鏈、閉包 10.原型鏈、繼承機(jī)制 11.this的理解 12.ES5新特性 13.E...

    suosuopuo 評(píng)論0 收藏0
  • 前端面經(jīng)整理之JS和CSS

    摘要:作為對(duì)象原型鏈的終點(diǎn)。調(diào)用函數(shù)時(shí),應(yīng)該提供的參數(shù)沒有提供,該參數(shù)等于。它可以用于引用該函數(shù)的函數(shù)體內(nèi)當(dāng)前正在執(zhí)行的函數(shù)。 一 JS 二 CSS 一 JS ==和===的區(qū)別 ===叫做嚴(yán)格運(yùn)算符 ==叫做相等運(yùn)算符嚴(yán)格運(yùn)算符比較時(shí)不僅僅比較數(shù)值還要比較數(shù)據(jù)類型是否一樣相等運(yùn)算符在比較相同類型的數(shù)據(jù)時(shí),與嚴(yán)格相等運(yùn)算符完全一樣。 在比較不同類型的數(shù)據(jù)時(shí),相等運(yùn)算符會(huì)先將數(shù)據(jù)進(jìn)行類型轉(zhuǎn)換,...

    stonezhu 評(píng)論0 收藏0
  • 前端面經(jīng)整理之JS和CSS

    摘要:作為對(duì)象原型鏈的終點(diǎn)。調(diào)用函數(shù)時(shí),應(yīng)該提供的參數(shù)沒有提供,該參數(shù)等于。它可以用于引用該函數(shù)的函數(shù)體內(nèi)當(dāng)前正在執(zhí)行的函數(shù)。 一 JS 二 CSS 一 JS ==和===的區(qū)別 ===叫做嚴(yán)格運(yùn)算符 ==叫做相等運(yùn)算符嚴(yán)格運(yùn)算符比較時(shí)不僅僅比較數(shù)值還要比較數(shù)據(jù)類型是否一樣相等運(yùn)算符在比較相同類型的數(shù)據(jù)時(shí),與嚴(yán)格相等運(yùn)算符完全一樣。 在比較不同類型的數(shù)據(jù)時(shí),相等運(yùn)算符會(huì)先將數(shù)據(jù)進(jìn)行類型轉(zhuǎn)換,...

    lvzishen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<