JavaScript严格模式

JavaScript的严格模式该怎么理解,今天看了es6,又讲到严格模式 但我一直不理解,严格模式是干啥的(=_=)

阅读 1.8k
2 个回答

就是JS设计之初有很多不规范的地方,写法很自由,比如声明变量名不需要var关键字等。
严格模式就是规定了哪些写法不被允许,严格模式下类似a=1这样的代码不再能声明变量了,必须使用关键字var、let等,var a = 1。

从 ES5 才开始有的特性,开启以后可以规避一些开发时马虎产生的错误。

主要有以下几个方面:

  • 使用未声明的变量会抛出 ReferenceError、而不是像原来那样隐式创建一个全局变量然后继续执行。这点可以提早发现很多因拼写错误导致的问题。
  • 给不可写变量/属性赋值会抛出 TypeError、而不是像原来那样跳过然后继续执行。这点可以提早发现百思不得其解为啥瞎特么赋值然后发现值没变的问题。
  • 删除不可删除属性会抛出 TypeError、而不是像原来那样跳过然后继续执行。同上。
  • 要求对象内地的属性不能重名,否则抛出 SyntaxError、而不是像原来那样跳过然后继续执行。比如你要是写出来 { name: 'jack', name: 'jim'} 这种代码就能提前发现问题。
  • 要求函数的参数名不能重名,否则抛出 SyntaxError。同上。function myFunc(p1, p1, p3) 这种傻哔问题就能提早发现了。

如此种种,不一一展开说了。完整的严格模式包含哪些内容可以看 MDN:https://developer.mozilla.org...

总之就是为了减少一些因写代码时脑子发抽而产生的问题。

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