严格模式下禁止 this 指向全局变量

'use strict';安全

1、严格模式的意义:经过严格模式,会在函数内部进行更严格的错误条件检测函数

2、严格模式的影响this

    ① 全部的变量必须使用var 关键字声明
    ② 不能使用delete关键字删除全局变量 ,之前默认删除失败,严格模式下直接报错
    ③ 在对象中不容许有同名的属性
    ④ 函数的参数必须惟一(不能出现同名的参数)
    ⑤ arguments对象的行为不一样,在非严格模式下修改形参的值会反映到arguments中,而严格模式下则相对独立
    ⑥ 禁用了argument.callee和caller函数,他们一个引用函数自己,一个引用调用函数
    ⑦ 不能在if语句中声明函数
    ⑧ 禁止使用eval和argument做为标识符
    ⑨ 修正this的值,在严格模式下,函数this的值始终是指定的值,不管指定的是什么值。
    10 禁用了with语句
    11 去掉了JavaScript中的八进制字面量(以0开头的八进制字面量是无效的语法)spa

    *严格模式下禁止 this 指向全局变量,会指向undefined对象

设立"严格模式"的目的,主要有如下几个:ip

  - 消除Javascript语法的一些不合理、不严谨之处,减小一些怪异行为;字符串

  - 消除代码运行的一些不安全之处,保证代码运行的安全;编译器

  - 提升编译器效率,增长运行速度;it

      -这种语法实现了向后兼容模式,支持严格模式的引擎检测到关键字会启动严格模式,不支持的引擎就当时遇到了一个没有赋值的字符串,作忽略处理。编译

  - 为将来新版本的Javascript作好铺垫。

相关文章
相关标签/搜索