0
点赞
收藏
分享

微信扫一扫

【ES6】严格模式

曾宝月 2022-02-21 阅读 75

开启严格模式

        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

举报

相关推荐

0 条评论