(Ryan的Koa系列博客)2.严谨模式(未全部完成)

11 篇文章 0 订阅

前言

'use strict';

ES5的严谨模式,是选择使用受限制的JS编写程序的一种方式。严谨模式不仅仅是一个语法子集,它有意的为普通代码设置了不同的语义。因此,浏览器不能运行没有通过严谨模式特性测试的严谨模式代码。严谨模式代码和非严谨模式代码可以共存,因此,脚本可以在执行基础代码(正常模式)的基础上,增量的执行严谨模式代码。

严谨模式与普通JS语义不同的地方有:

1.严谨模式取消了一些js脚本不报错的地方,让这样的脚本开始抛出错误(提高严谨性,降低容错性,避免一些奇怪的错误发生)
2.严谨模式通过修改一些语言实现方面的错误,解决了js引擎很难优化的代码问题,换句话说,严谨模式的代码会比同样的非严谨模式的代码执行的更加高效。
3.严谨模式禁止了部分会出现在未来ES版本中的语法。此处,还可以这样理解,虽然禁止了部分会出现在未来版本中的语法,但是,严肃模式还是提倡了一些写法是与未来版本相兼容的。

严谨模式的使用

针对文件

在文件头部增加严谨模式的标签

"use strict";
console.log("这是严谨模式。");

针对函数

在函数头部增加严谨模式的标签

function strict(){
  "use strict";
  console.log("这是严谨模式。");
}

严谨模式的代码行为

(此处暂时来源于阮一峰的网络日志,阮大大要求“自由转载-非商用-非衍生-保持署名”,之后会结合官网,进行翻译和扩展,替换掉阮大大的这部分)

全局变量显式声明

静态绑定

禁止使用with语句

创设eval作用域

增强的安全措施

禁止this关键字指向全局对象

禁止在函数内部遍历调用栈

禁止删除变量

显式报错

重名错误

对象不能有重名的属性

函数不能有重名的参数

禁止八进制表示法

arguments对象的限制

不允许对arguments赋值

arguments不再追踪参数的变化

禁止使用arguments.callee

函数必须声明在顶层

将来Javascript的新版本会引入”块级作用域”。为了与新版本接轨,严格模式只允许在全局作用域或函数作用域的顶层声明函数。也就是说,不允许在非函数的代码块内声明函数。

"use strict";
  if (true) {
    function f() { } // 语法错误
  }
  for (var i = 0; i < 5; i++) {
    function f2() { } // 语法错误
  }

保留字

来源保留字说明
严谨模式implements
严谨模式interface
严谨模式let
严谨模式package
严谨模式private
严谨模式protected
严谨模式public
严谨模式static
严谨模式yield
ES5class
ES5enum
ES5export
ES5extends
ES5import
ES5super
浏览器const.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值