use strict与普通模式的区别

  1. 普通模式的变量、for循环中的变量可以不用var声明,严格模式必须使用var声明变量。
  2. 禁掉了with关键字。
  3. 普通模式eval的作用域:eval在全局作用域,就是全局;eval在函数内部,就是局部作用域。在严格模式下,eval本身就是一个作用域。
  4. 为了代码安全this禁止指向全局对象。所以构造函数如果不通过new实例化对象,那么就会直接报错,因为undefined无法设置属性。
  5. 为了让代码更安全,禁止在函数内部遍历调用栈。