严格模式与非严格模式

我在IE浏览器中,使用strict模式.

发现,严格模式下, 不允许一个属性多处定义的错误提示, 这个怎么解决?

阅读 4.3k
3 个回答
误解题主的问题了.请忽略我的解释.

可能是你的浏览器不支持. 严格模式, 也是区分浏览器兼容的.


'use strict';
// 如果浏览器支持strict模式,
// 下面的代码将报ReferenceError错误:

abc = 'Hello, world';
alert(abc);

use strict模式下, 在相同作用域下的相同变量不允许多次定的:

// global scope
let aVariable = 1;
let aVariable = 3;  // Identifier 'aVariable' has already been declared

但是在不同的作用于是可以多次定义, 按照局部(local)屏蔽全局(global)原则:

// global scope
let aVariable = 1;

{
  // local scope
  // in fact the aVariable here is another identifier!
  let aVariable = 3;
  console.log(aVariable);  // 3
}

console.log(aVariable);  // 1

其实一个变量在实际使用的时候, 不需要多次定义, 可以一次定义, 多次修改变量值. 可以采用类似c语言的方式, 作用域scope里在用到的变量在作用于最前面声明并初始化:

function sampleFoo() {
  let a = [],
      i = 0;  // variable for loop with initailization
  
  for (i = 1; i <= 3; i += 1) {  // "i" changes
    a.push(i);
  }
}

那就看到是哪个js报错,然后去修改js就好了啊

把重复的属性名改了

可能是你自己多写了。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题