2 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個(gè)贊
使用聲明的變量let
的范圍是包含它的最內(nèi)部代碼塊。
在您的示例中,有兩個(gè)不同的變量名為msg
.
第一個(gè) (?let msg = 'message1') is the one printed by
console.log(msg);`。
第二個(gè) (let msg = 'message2') 僅存在于{...}
聲明它的塊 ( ) 中。它在代碼執(zhí)行離開(kāi)塊時(shí)被銷毀(在}
)。
在該塊內(nèi)部,命名的外部變量msg
不可用。
沒(méi)有必要多次聲明一個(gè)變量(除非你的目的是得到你現(xiàn)在遇到的效果)。在第一次使用之前只聲明一次。
此代碼按預(yù)期工作:
let values = true;
let msg = 'message1';
if (values) {
? msg = 'message2';
}
console.log(msg);
您可以console.log()在if塊內(nèi)添加調(diào)用以檢查它是否已執(zhí)行(因?yàn)闂l件是true):
let values = true;
let msg = 'message1';
if (values) {
? let msg = 'message2';
? console.log('inner: ' + msg);
}
console.log('outer: ' + msg);

TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊
聲明沒(méi)有問(wèn)題if。它運(yùn)行正常,但問(wèn)題是您msg再次定義了變量let msg = 'message2';
那應(yīng)該替換為msg = 'message2',它將起作用。
let values = true;
let msg = 'message1';
if(values) {
msg = 'message2';
}
console.log(msg);
添加回答
舉報(bào)