严格模式

定义变量
严格模式下不能忽略关键字直接定义变量

"use strict";
let m = 1; //m is not defined

delete 属性

// delete m //Delete of an unqualified identifier in strict mode.
console.log(m);

eval
在严格模式下,eval 不能再包含的上下文中创建变量或函数

eval("var a = 1");
alert(a);//a is not defined
函数

严格模式下,函数参数不能是相同的名字,并且修改参数的值不能反映到arguments


var obj = {
    name:"kk",
    name:'K&K'
}
console.log(obj.name)

// 严格模式下,函数的参数名不能相同
function sum(num){
    num = 0; // 在严格模式下,修改参数的值不会反应到 arguments 对象上
    console.log(num,',',arguments[0]);
}
sum(1);

不能使用 caller、callee

function num(n){
    if(n<1){
        return 1;
    }else{
        return n + arguments.callee(n-1)
    }
}
num(6);
// 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them 

不能改变 this

严格模式下不能使用 apply 、call、bind 改变 this 的值,this 指向的谁就是谁,指向 null 就是null

var color = "red";
function colorFn(){
    console.log(this.color);
}
colorFn.call(null);

严格模式下还删除了 with()

严格模式还去掉了 js 八进制字面量,以 0 开头的八进制字面量在之前经常报错,现在在严格模式下,八进制字面量已经无效了。

使用八进制字面量

"use strict"
var value = 010; // Octal literals are not allowed in strict mode.

//非严格模式下
var value = 010;
value; //8
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值