我在Chrome代码段中写了这个:
let myVar = someValue;
当我第二次尝试运行它时,它表示变量已经被声明并在第一行引发错误.
错误是:
未捕获的SyntaxError:标识符'commitPromotionData'已经声明为:1:1
当然,这将是控制台的默认行为,但这似乎没有多大意义..
这是有意的吗?有没有办法解决?
我相信你遇到的事实是,一个let
语句只能用于在任何给定范围内创建一次变量.在您的示例中,即使您使用的是Chrome代码段,如果您window.commitPromotionData
在let
语句后立即输出,也会看到它在那里.这是您的let
语句为变量赋值的范围.重新运行相同的代码段本质上会尝试在窗口中创建相同的变量,并导致语法错误,如此处所述.
您有两种解决方法:
显然,第一种是将任何顶级let
语句var
的
或者创建一个新的块范围来包装代码.这可以通过将代码包装在IIFE中来完成(function(){ ... code ... })()
使用块范围并将其包装在"{}"中.
{ enter code here }