【ES6】严格模式

本文详细介绍了JavaScript中的严格模式,包括开启方式和一系列严格模式下的规定,如禁止使用未定义变量、不允许同名参数、禁止使用with等。同时,文章提倡使用点语法替代arguments对象,并列举了新增的保留字。通过理解严格模式,开发者可以写出更规范、更安全的JavaScript代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开启严格模式

        1.在scripet标签中顶部属写 "use strict" ;

        2.或者 在scripet标签中,书写 type="module" ;

开启严格模式后的规定

        1.严格模式下不允许使用未定义的变量,必须使用let、const、或者var做定义变量或者常量后才能使用

a = 3 ;
console.log(a);	//以前表示定义了全局变量a  然后给a赋值为3
				//开启严格模式后则报错,显示a未定义

        2.不允许同名参数出现

function fn(a,a){
  console.log(a);  //正常情况下不会报错,正常输出第二个a值为2
  					//开启严格模式后,会进行报错
}
fn(1,2)

        3.不允许使用 with (看清楚是with不是width)

        4.不能对只读属性赋值

var str = "aaa";
str.length = 10;	//正常情况下不会报错
					//开启严格模式后进行报错,显示length是只读属性

        5.禁止使用八进制(因为有十六进制)

        6.不能删除不可删除属性

var str = "aaa";
delete str.length;	//正常情况下不会报错,开启严格模式后则会进行报错

        7.eval 和 arguments 不能被重新赋值

                正常情况下,虽然给他们赋值是一种不正确无意义的行为,但正常情况下不会报错;

                开启严格模式后则会进行报错;

        8.不能使用 arguments.calle 和 arguments.callee.caller ,使用则会报错

        9.禁止this指向全局对象,顶层的this指向undefined;

function fn(){
  console.log(this);	//正常情况下,此处的this指向windows;
  						//开启严格模式后,this指向undefint
}
fn();

//注意一点 在回调函数中,this永远指向window

setTimeout(function(){
	console.log(this);	//因为这是一个回调函数,所以在严格和非严格的模式下,都输出windows
},100)

        10.不能使用 函数.caller和 函数.arguments

function fn(){
	........
}
fn.caller 或 fn.arguments;   //正常情况下,输出null,开启严格模式后,禁止使用,如果使用直接报错

小总结:

以后不要使用 agruments ,改用点语法来获取更多参数来替换arguments

function fn(...arr){  //点语法替换了arguments
	console.log(arr)  //此处,arr是一个数组,里面存放了传来的参数  输出[1,2,3]
}
fn(1,2,3)

function fn(a,...arr){ //此处定义了一个a
	console.log(arr)    //则将参数第一个值赋值给a 剩余的还存放在数组中  则arr为[2,3]
}
fn(1,2,3)

        11.增加了一些保留字,如:protected、static和interface

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值