参考http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html
严格模式的目的:更严谨,更安全,更合理
1.两种调用方式
a.在脚本的第一行 "use strict",表明整个脚本都将以"严格模式"运行
b.在函数内部的第一行,表明整个函数都将以"严格模式"运行
因为有脚本文件合并的顾虑,一般两种方法并用
(function (){ "use strict"; // some code here })();
2.严格模式对于语法和行为改变
a.全局变量必须声明,不然报错
b.eval里面是单独的作用域
c.对象的属性不得重名,函数参数名不得重名
d.函数内部的this,不指向全局作用域(window),默认是undefined
e.函数内部禁止使用 fn.arguements,而是直接用arguments
f.arguments不得赋值,arguments也不再追踪参数的变化,算是只读
g.严格模式只允许在全局作用域或函数作用域的顶层声明函数。也就是说,不允许在非函数的代码块内声明函数(if,或者for)
h.保留字变多