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
此行为是标准定义的吗?
答案 0 :(得分:2)
使用旧的var
关键字,您可以多次声明一个变量而不会出现问题(嗯……这本身就是一个问题)。
const
和let
关键字的行为更好。在您的情况下:您不需要重新声明x
,因为它已经被声明为foo
函数的参数,因此您可以直接为其赋值(覆盖参数不是很干净) ,但合法)。