为什么我不能在 Chrome 中声明一个与函数体同名的 let 变量

乔治

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

这种行为是标准定义的吗?

凯尔

使用 oldvar关键字,您可以自由地多次声明一个变量而不会出现问题(嗯……这本身就是一个问题)。

constlet关键字有更好的表现。在您的情况下:您不需要重新声明,x因为它已经声明为foo函数的参数,因此您可以直接为其分配一些东西(覆盖参数不是很干净,但合法)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么在函数内部使用let声明的某些变量在另一个函数中变得可用,而另一些变量导致引用错误?

为什么我可以从另一个文件调用一个函数(带有警告),但是不能在不声明的情况下使用另一个文件中的变量?

为什么我不能在变量中捕获FakeItEasy期望?

为什么我不能在C中的函数外部给全局变量赋值?

为什么我不能在self是类的协议扩展中更改变量?

为什么我不能在代码中删除中间变量?

为什么我不能在类的不同行中声明和定义成员变量?

为什么我不能在协议中声明动态变量

为什么我的选择字段事件处理程序不能在Chrome / Android中工作?

为什么即使在参数设置为默认值的情况下,也不能使用let声明与一个函数参数同名的变量?

为什么我不能在函数内使用vars()作为函数外的变量?

为什么我不能在Timer.scheduledTimer函数中更改变量的值?

为什么我不能在Assembly中声明一个使用已取消引用的变量的值的变量?

C#-为什么我不能在另一个类中更改我的int变量?

为什么我不能在“ Prolog + C”中存储一个变量的地址?

为什么我不能在班级中访问变量。Python

为什么我不能在PHP函数中访问我的私有变量?

为什么我不能在zsh中定义一个名为path的只读变量?

为什么我不能在带有嵌套函数的函数内声明变量?

为什么我不能在我的 HTML 中为 Typescript 设置全局电子变量?

为什么我不能在 PHP 7 中访问我的会话变量?

为什么我不能在 shell 中执行带小数的 let ?什么是BC?

为什么我不能在定义中定义变量?

为什么我不能在 Python 中使用变量作为参数来调用这个函数?

为什么我不能在 cookie.get 函数之外使用 cookie 变量值?

为什么我不能在这个函数的循环之外定义一个计数变量(C++)

为什么不能在用 let 和 const 声明变量之前完成赋值?

为什么我们不能在声明结构变量名称时使用连字符?

为什么我不能在全局范围内访问已声明的变量