JavaScript 严格模式(use strict)——0710

1、什么是JavaScript 严格模式?

JavaScript 严格模式(strict mode)即在严格的条件下运行。

同样的代码,在"严格模式"中,可能会有不一样的运行结果;一些在"正常模式"下可以运行的语句,在"严格模式"下将不能运行。

支持严格模式的浏览器:
Internet Explorer 10 +、 Firefox 4+ Chrome 13+、 Safari 5.1+、 Opera 12+。

2、为什么使用严格模式?

消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;

  • 消除代码运行的一些不安全之处,保证代码运行的安全;
  • 提高编译器效率,增加运行速度;
  • 为未来新版本的Javascript做好铺垫。

3、严格模式声明

严格模式通过在脚本或函数的头部添加 “use strict”; 表达式来声明(它不是一条语句,但是是一个字面量表达式,在 JavaScript 旧版本中会被忽略)。

在函数内部声明是局部作用域 (只在函数内使用严格模式)。

4、严格模式的限制

不允许使用未声明的变量;
不允许删除变量或对象(delete);
不允许删除函数(delete);
不允许函数形参重名;

"use strict";
function x(p1, p1) {};   // 报错

不允许适应八进制;

"use strict";
var x = 010;             // 报错

不允许使用转义字符;

"use strict";
var x = \010;            // 报错

不允许对只读属性赋值;
(非严格模式下只是赋值无效,但不会报错;严格模式下会报错)

"use strict";
var obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});

obj.x = 3.14;            // 报错

不允许对一个使用getter()方法读取的属性进行赋值;

    "use strict";
    var o={
        get x(){
            return 1;
        }
    };
    o.x=10;   //报错
    console.log(o.x);  

不允许删除一个不允许删除的属性;

"use strict";
delete Object.prototype;  //报错

变量名不能使用“eval”、“arguments”字符串;
由于一些安全原因,在作用域 eval() 创建的变量不能被调用;

"use strict";
eval ("var x = 2");
alert (x);               // 报错

禁止this关键字指向全局对象;

    function f2(){
        "use strict";
        console.log(this);  //undefined
    }
    f2();

因此,使用构造函数时,如果忘了加new,this不再指向全局对象,而是报错。

function f(){
    "use strict";
    this.a = 1;
};
f();	// 报错,this未定义

5、get set 访问器

var obj={
        name:"",
        get getname(){
            //获取属性值
            return this.name;
        },
        set setname(n){
            //设置属性值
            this.name=n;
        }
    };
    //设置值
    obj.setname="小花";
    console.log(obj.getname);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值