当前位置:  开发笔记 > 编程语言 > 正文

片段 - 标识符已经声明

如何解决《片段-标识符已经声明》经验,为你挑选了2个好方法。

我在Chrome代码段中写了这个:

let myVar = someValue;

当我第二次尝试运行它时,它表示变量已经被声明并在第一行引发错误.

错误是:

未捕获的SyntaxError:标识符'commitPromotionData'已经声明为:1:1

当然,这将是控制台的默认行为,但这似乎没有多大意义..

这是有意的吗?有没有办法解决?



1> ragamufin..:

我相信你遇到的事实是,一个let语句只能用于在任何给定范围内创建一次变量.在您的示例中,即使您使用的是Chrome代码段,如果您window.commitPromotionDatalet语句后立即输出,也会看到它在那里.这是您的let语句为变量赋值的范围.重新运行相同的代码段本质上会尝试在窗口中创建相同的变量,并导致语法错误,如此处所述.

您有两种解决方法:

    显然,第一种是将任何顶级let语句var

    或者创建一个新的块范围来包装代码.这可以通过将代码包装在IIFE中来完成(function(){ ... code ... })()


这可以通过将代码包装在[block statement]中来完成(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/block#Block_Scoping_Rules)`{...代码......}`

2> 小智..:

使用块范围并将其包装在"{}"中.

{
  enter code here
}


Stack Overflow上的一个好习惯是添加解释为什么您的解决方案应该工作.有关更多信息,请阅读[如何回答](// stackoverflow.com/help/how-to-answer).
好答案.正是我需要知道的一目了然.
推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有