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

資訊專欄INFORMATION COLUMN

for 循環(huán) var 和 let

shengguo / 1399人閱讀

摘要:純屬個人理解,如有問題還請指出在聲明的內(nèi)存在一個變量,會存在引擎內(nèi)部。

純屬個人理解,如有問題還請指出~

在聲明的()內(nèi)存在一個變量 i,會存在 JavaScript 引擎內(nèi)部。 每一次循環(huán)的時候, JavaScript 引擎內(nèi)部會記住上一輪循環(huán)的值,然后將新的 i 的值賦值給 i

for (let i = 0; i < 3; i++) {
  let i = "abc";
  console.log(i);
}
//abc
//abc
//abc

由于let塊級作用域,for()內(nèi)的let 相當于有個隱藏的父作用域,for{}循環(huán)體內(nèi)的let 是新的子作用域,重新聲明一個 i;不會影響()里 i 的值

for (let i = 0; i < 3; i++) {
  i = "abc";
  console.log(i);
}
//abc

但是如果不聲明 i,直接給 i 賦值,會影響()里 i 的值,說明()是循環(huán)體的上一級作用域,在循環(huán)體里直接改變 i 的值會影響上一級作用域里的 i 值

for (var i = 0; i < 3; i++) {
  var i = "abc";
  console.log(i);
}
//abc

相當于
1 先var i;
2 再執(zhí)行 for 循環(huán)
3 第一次 i = 0 滿足條件 進入循環(huán)體,由于 var 沒有塊級作用域的概念,所以會重新聲明修改for循環(huán)外全局作用域的 i 的值,從而影響了循環(huán)變量的值,導(dǎo)致后面條件不滿足進入不到循環(huán)體,所以只輸出一次

for (var i = 0; i < 3; i++) {
  let i = "abc";
  console.log(i);
}
//abc
//abc
//abc

循環(huán)變量 i 是全局作用域,循環(huán)體內(nèi) let i 為塊級作用域內(nèi)的變量,不影響全局變量,輸出三次

for (let i = 0; i < 3; i++) {
  var i = "abc";
  console.log(i);
}
//Uncaught SyntaxError: Identifier "i" has already been declared

!!! 不太理解這個為什么會報錯,希望懂得的小伙伴們給個指導(dǎo)
個人迷惑的地方:報這個錯是因為在同一個作用域下重復(fù)聲明變量 i,但是{}內(nèi)的var i 為 全局作用域下的 i ,()內(nèi)的 let i 屬于()的作用域,兩個不同的作用域為什么會報錯呢???

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

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

相關(guān)文章

  • 循環(huán)中的異步&&循環(huán)中的閉包

    摘要:原文鏈接在這之前先要了解一下循環(huán)中和的區(qū)別是函數(shù)級作用域或者全局作用域,是塊級作用域看一個例子循環(huán)中的邏輯代碼函數(shù)下的輸出,全局下的不存在現(xiàn)在我們把換為循環(huán)中的邏輯代碼報錯了,不在函數(shù)作用域下,當然肯定也不會再全局下因為和的這個區(qū)別當然和的 原文鏈接在這之前先要了解一下 for循環(huán)中l(wèi)et 和var的區(qū)別 var 是函數(shù)級作用域或者全局作用域,let是塊級作用域看一個例子 fu...

    Near_Li 評論0 收藏0
  • ES6 系列之 let const

    摘要:塊級作用域存在于函數(shù)內(nèi)部塊中字符和之間的區(qū)域和塊級聲明用于聲明在指定塊的作用域之外無法訪問的變量。和都是塊級聲明的一種。值得一提的是聲明不允許修改綁定,但允許修改值。這意味著當用聲明對象時沒有問題報錯臨時死區(qū)臨時死區(qū),簡寫為。 塊級作用域的出現(xiàn) 通過 var 聲明的變量存在變量提升的特性: if (condition) { var value = 1; } console.lo...

    PascalXie 評論0 收藏0
  • es6塊級綁定之let and const全理解

    摘要:聲明會組織對變量綁定和對自生值的修改,這意味著聲明并不會組織對變量成員的修改。循環(huán)中的塊級綁定在此處仍然可被訪問輸出的結(jié)果并不是預(yù)期的值而是是因為聲明導(dǎo)致的變量的提升。全局塊級綁定與不同于的另一個方面是在全局作用域上的表現(xiàn)。 變量聲明一直是js工作中最微妙的一部分,它不像C語言一樣,變量總是在被它創(chuàng)建的時候聲明,js語言可以允許你在你需要聲明變量的時候進行聲明。 var let co...

    TigerChain 評論0 收藏0
  • 深入理解ES6 - var-let-const

    摘要:聲明變量不存在變量提升。臨時死區(qū),而且不能在聲明之前訪問它。禁止重復(fù)聲明相同的變量,否則報錯。不存在變量提升,一旦執(zhí)行快外就會立即銷毀。聲明不允許修改綁定,但允許修改值,也就是說用創(chuàng)建對象后,可以修改該對象的屬性值。 知識點 var 聲明變量: 1、存在變量提升,實際上var無論在哪里聲明,都會被當做當前的作用域頂部聲明變量。 2、可以重復(fù)聲明,后聲明的變量會覆蓋前聲明的變量。 let...

    alexnevsky 評論0 收藏0
  • es6--letconst

    摘要:同時這個變量立即被初始化,初始值為當語句執(zhí)行到賦值語句時,這個變量改變其初始值。對一個還未初始化的變量進行操作將會引起。循環(huán)和循環(huán)使用申明變量時和循環(huán)一樣。的運行過程和三者的表現(xiàn)和在循環(huán)過程中相似。 let和const 標簽(空格分隔): es6 let命令 這個命令是用來申明變量的,但是和es5不同的是,用它來聲明的變量是局部變量,存在于局部作用域(blocked scope): ...

    lufficc 評論0 收藏0

發(fā)表評論

0條評論

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