javascript - 为什么我不能在 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
关键字,您可以自由地多次声明变量而不会出现问题(嗯......这本身就是一个问题)。
const
和let
关键字具有更好的行为。在您的情况下:您不需要重新声明x
,因为它已经被声明为foo
函数的参数,因此您可以直接为其分配一些东西(覆盖参数不是很干净,但是是合法的)。
推荐阅读
- c# - 在线程多次访问的情况下,SerialPort.Write 方法是否受上下文切换的影响?
- sql - 更新查询 - T SQL
- typescript - [] + []; { } +[]; [] + {}; {} + {}; 为什么 Typescript 3.6 中只有 2 个错误?
- android - Android:应用程序销毁时更新 Firebase 实时数据库
- css - 如何防止应用于一个 Three.JS 场景的 CSS 应用于所有场景
- google-api - 如何为驱动器和文档获得更多受限的 google api 范围?
- laravel - Laravel Eloquent 查询模型,在 n 到 m 关系中具有多个关联
- vue.js - 为什么“Vue init”会挂起?
- eclipse - Spark Maven 项目未运行
- firebase - 如何在 Firebase 的 A/B 测试中过滤特定的目标指标事件?