2 回答

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

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