成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

hover_lew / 3447人閱讀

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

今天寫個函數(shù)時想遍歷數(shù)組,想想沒怎么用過for...of...這類的語法,于是做了個嘗試,竟發(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]

這是為什么呢,暫時找不到答案
那么for...in...會不會呢?

于是又試試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"}

。。。。。
留個坑,以后看能不能找到為什么。
后來找出解釋,不知是否正確,如下:
以下是個人推斷,有錯誤請指出

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

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

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

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

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

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

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

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/96376.html

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

    lvzishen 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<