JavaScript 严格模式

前言:

为了消除JavaScript语法的一些不合理,不严谨的地方,提高编译器的效率,增加运行速度,所以在JavaScript 1.8.5 (ECMAScript5) 中新增了严格模式的特性("use strict"),在JavaScript 旧版本中会被忽略

严格模式的声明

在头部或函数的头部的添加 "use strict"; 表达式来声明。如果在函数的头部声明,则表示只在该函数内部使用严格模式。

严格的模式的严格之处:

"use strict";
a = 1.23; // 报错,不允许使用没有声明的变量
b = {x=1,y=2};//报错,对象也是一个变量
delete b; //报错,不能删除变量、对象、函数
delete Object.prototype; //报错 不允许删除一个不能删除的的属性
var eval = 1; // 报错 不允许把“eval”和“arguments”当作变量名
var c = /101; // 报错 不允许使用转义字符
var d = 011; //  报错 运行使用八进制
with(Math){ e = sin(1)}; // 报错,不能使用这种语句

另外,值得注意的是,在严格模式下,禁止this关键字指向全局对象。

没有声明严格模式情况下, this关键字默认指向全局对象全局对象只是一个对象,而不是类。既没有构造函数,也无法实例化一个新的全局对象,而在客户端 JavaScript 中,全局对象就是 Window 对象,表示允许 JavaScript 代码的 Web 浏览器窗口)。声明严格模式后,this的值为undefined

所以,在下列情况下:

function person(){
    "use strict";
    this.name="dam";
};
person();// 报错,没有使用new。this未定义
new person(); // 正确,这时this指向新的对象。
var dam = new person();// 当然,我们应该给这个对象起个名字

在严格模式下新增的JavaScript关键字(学过java的同学有没有觉得很眼熟?):

implements
interface
let
package
private
protected
public
static
yield

在严格模式下,上面的关键字不允许当作变量名。

最后,特别强调一点 “use strict”指令只允许出现在脚本的开头和函数内部的开头。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值