第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

我們必須在 JavaScript For 循環(huán)中包含 Let 關(guān)鍵字嗎?

我們必須在 JavaScript For 循環(huán)中包含 Let 關(guān)鍵字嗎?

森欄 2023-08-10 16:04:47
我正在學(xué)習(xí) For Loops,我發(fā)現(xiàn)以下兩段代碼的工作原理是一樣的。代碼1:for (let i=0 ; i<bobsFollowers.length; i++){  for ( let j=0; j<tinasFollowers.length; j++){    if (bobsFollowers[i] === tinasFollowers[j]){      mutualFollowers.push(tinasFollowers[i]);    }  }}console.log(相互關(guān)注者);代碼2for (i=0 ; i<bobsFollowers.length; i++){  for ( j=0; j<tinasFollowers.length; j++){    if (bobsFollowers[i] === tinasFollowers[j]){      mutualFollowers.push(tinasFollowers[i]);    }  }}console.log(mutualFollowers);
查看完整描述

5 回答

?
子衿沉夜

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊

如果不包含let關(guān)鍵字,則可以全局訪問(wèn)該變量


for (let i = 0; i < 3; i++) {

  console.log(i);

}


for (j = 0; j < 3; j++) {

  console.log(j);

}


console.log('j ', j); // accesible

console.log('i ', i); // inaccesible


查看完整回答
反對(duì) 回復(fù) 2023-08-10
?
烙印99

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊

是的,如果您沒(méi)有l(wèi)et在for,for...of或for...in循環(huán)等中專門使用關(guān)鍵字,它們的工作方式將與您使用關(guān)鍵字時(shí)相同let。


但是,當(dāng)您沒(méi)有顯式聲明 usinglet關(guān)鍵字時(shí),該變量將被聲明為var. let和const是塊級(jí)變量,但您還需要了解“函數(shù)不是唯一的塊,any{ }基本上是一個(gè)塊”。即一旦聲明“var”將成為函數(shù)作用域變量,如果它不在函數(shù)內(nèi)部并在外部聲明,那么它就變得全局可用,考慮到您可能有多個(gè)使用變量的 for 循環(huán),這不是一件好事名為“i”,如果您不使用 let,它只會(huì)不斷增加舊的'i'. 請(qǐng)看下面兩個(gè)例子來(lái)理解我上面這句話的意思:


const test = function(){

let let1 = 1;

var var1 = 2;

{

let let1 = 9; //This is a block scoped variable limited to this { } block?

var var1 = 3; //re-initialization still overrides the original var 1 variable's value because once declared, the var variable is function scoped


console.log(let1); //9 - Block Scoped

console.log(var1); //3 - Function Scoped

}

console.log(let1); //1 - Function Scoped?

console.log(var1); //3 - Still Function Scoped, always function scoped

}


test();


我所說(shuō)的全球增值的意思是'i':


for(i=0; i< 2; i++){

console.log('first loop', i)

}


for(i;i< 5; i++){//I am not initializing i to 0, but I'm just trying to show that it is a global variable now.

console.log('second loop', i)

}


for(i; i< 7; i++){ //I am not initializing i to 0, but I'm just trying to show that it is a global variable now.

console.log('third loop', i)

}

其次,在 ES5 中,引入了嚴(yán)格模式,這基本上是一種可以選擇不編寫“草率模式”JS 代碼的方式,并且可以通過(guò)'use strict';全局或函數(shù)級(jí)別指定來(lái)使用它。大多數(shù)公司和開(kāi)發(fā)人員在其專業(yè)代碼庫(kù)中都使用嚴(yán)格模式。

我想傳達(dá)的一點(diǎn)是,“嚴(yán)格模式”不允許您在不聲明變量的情況下使用 for 循環(huán),您必須明確指定“var”或“l(fā)et”關(guān)鍵字。因此,聲明變量始終是一個(gè)好習(xí)慣。

最后,在當(dāng)前的 ES6 時(shí)代,使用var關(guān)鍵字聲明變量并不被認(rèn)為是一個(gè)好的做法,因?yàn)榉Q為“提升”,這基本上意味著在聲明 a 之前var x;,如果你嘗試使用它,你仍然可以,但是它的值將是“未定義”。但如果let你在聲明變量之前不能使用它。


查看完整回答
反對(duì) 回復(fù) 2023-08-10
?
喵喔喔

TA貢獻(xiàn)1735條經(jīng)驗(yàn) 獲得超5個(gè)贊

是的,你必須?;蛘吲f的var 正如其他回復(fù)提到的,您將在更廣泛的范圍內(nèi)填充此變量。


想象一下這種情況,您需要?jiǎng)?chuàng)建一個(gè)打印前 10 個(gè)數(shù)字的函數(shù):


function printNumbers(){

    for (i=0; i<10; i++) {

        console.log(i)

    }

}

這很酷?,F(xiàn)在您需要調(diào)用該函數(shù) 12 次,很簡(jiǎn)單吧?


function printNumbers(){

    for (i=0; i<10; i++) {

        console.log(i)

    }

}


for (i=0; i<12; i++) {

   printNumbers()

}

好吧,如果您在 google chrome 控制臺(tái)中執(zhí)行此操作(不要)。你會(huì)燒壞你的瀏覽器的。因?yàn)閕永遠(yuǎn)不會(huì)達(dá)到 12,你將陷入無(wú)限循環(huán)。12您可以通過(guò)更改來(lái)安全地測(cè)試這一點(diǎn)5,您將看到該函數(shù)僅運(yùn)行1time 而不是5。


因此,它不僅僅適用于您的代碼,而是適用于將來(lái)將使用您的代碼的人。你的代碼中可能會(huì)留下一個(gè)潛在的重大失敗。想象一下它在圖書館里。


查看完整回答
反對(duì) 回復(fù) 2023-08-10
?
12345678_0001

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊

'let' 是關(guān)于詞法作用域的,默認(rèn)情況下 JavaScript 中的變量和對(duì)象具有全局作用域。正如其他人指出的那樣,使用 var 將使變量的范圍成為全局變量,因此任何東西都可以訪問(wèn)和修改它。


let 的另一個(gè)用例是在閉包中。這個(gè)例子來(lái)自 CS50 的 React Native 講座 0 和 1。


這里 makeFunctionArray 返回一個(gè)打印 i 值的函數(shù)數(shù)組。


function makeFunctionArray() {

  const array = [];

  

  for(var i=0; i<5; i++) {

    array.push(function () { console.log(i) });

  }


  return array;

}


const functionArray = makeFunctionArray();

functionArray[0]();

現(xiàn)在,您期望 functionArray[0]() 打印什么?0,對(duì)嗎?因?yàn)槲覀冋谡{(diào)用索引為零處的函數(shù),它應(yīng)該控制臺(tái)日志 0。但它不會(huì)打印 0,而是打印 5。


這是因?yàn)椤癷”具有全局作用域,并且當(dāng)循環(huán)終止時(shí)其值為 5。我們從 makeArray 函數(shù)返回的函數(shù)(閉包)仍然可以訪問(wèn)“i”,并且返回時(shí)值 5 會(huì)被包含在其中。所以每個(gè) functionArray[index]() 都會(huì)打印 5。


如果 'i' 是一個(gè) let,則可以使用 'let' 來(lái)避免這種情況,它的作用域?qū)H為 'for' 循環(huán)。


查看完整回答
反對(duì) 回復(fù) 2023-08-10
?
不負(fù)相思意

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊

的范圍let僅限于該塊。但如果不指定let關(guān)鍵字,它的作用域是全局環(huán)境(瀏覽器的全局作用域是 window 對(duì)象)


{

   let a = 1;

   b = 2;

}


console.log(a) //error

console.log(b) //2


查看完整回答
反對(duì) 回復(fù) 2023-08-10
  • 5 回答
  • 0 關(guān)注
  • 225 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)