ECMScript 5引入严格模式(strict mode)。严格模式定义了一种不同的解析与执行模型,ES3中的不确定行为会得到处理,某些不安全的操作也会抛出错误。支持严格模式的浏览器:IE10+,Firefox 4+,Safari5.1+,Opera 12+和Chrome。
若整个脚本启用严格模型,则在顶部添加代码:
"use strict";
这是一个编译指示。
若函数在严格模式下执行,则在函数内部的上方添加:"use strict";
1. 给未经声明的变量(没用var声明)在严格模式下会抛出ReferenceError错误。
2.严格模式下,delete一个未声明未定义的变量会出错。(普通模式下不出错,但这么做无意义)。
3. 严格模式对函数有一些限制:不能把函数或参数命名为eval或arguments;不能出现两个命名参数同名的情况。
4.严格模式下不能通过给arguments赋值来传递给命名参数;且重写arguments的值会导致语法错误(代码不会执行)。
5.严格模式下,访问arguments.caller和arguments.callee都会导致错误。
6.严格模式下,未指定环境对象而调用函数,则this值不会转型为window。除非明确把函数添加到某个对象,或者调用apply()或call(),否则this值将是undefined。