簡體   English   中英

為什么我不能在Chrome中聲明與函數體同名的let變量

[英]Why can't I declare a let variable with the same name as function body in Chrome

Chrome 67(撰寫本文時為最新版本)使我可以執行此操作

function foo(x, y) {
    var x = 5;
    console.log(x, y);
}
foo(1,2);
// prints 5 2

但不是這個

function foo(x, y) {
    let x = 5;
    console.log(x, y);
}
foo(1,2);
// Throws a SyntaxError: Identifier 'x' has already been declared

此行為是標准定義的嗎?

使用舊的var關鍵字,您可以多次聲明一個變量而沒有問題(嗯...這本身就是一個問題)。

constlet關鍵字具有更好的行為。 在您的情況下:您不需要重新聲明x因為x已經被聲明為foo函數的參數,因此您可以直接為其賦值(覆蓋參數不是很干凈,但是很合法)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM