天天看点

JavaScript基础——严格模式

一、严格模式的概念和作用

除了正常运行模式,ES5添加了第二种运行模式:“严格模式”。所谓严格模式是指声明变量或者定义方法时应该注意规范。

严格模式的作用

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

2.消除代码运行的一些不安全之处,保证代码运行的安全;

3.提高编译器效率,增加运行速度;

4.为未来新版本的JS做好铺垫

二、严格模式的调用

如何进入严格模式?

使用这一行语句 "use strict"

不过老的浏览器会把他当成一串普通的字符串加以忽略

严格模式的两种调用方式

1.针对整个脚本文件:将 “use strict” 放在脚本文件的第一行,则整个脚本文件都将以“严格模式”运行,

  如果这行语句不在第一行,则无效,整个脚本以“正常模式”运行。

  如果不同模式的代码文件合并成一个文件,这一点需要特别注意。

2.针对单个函数:将 “use strict” 放在函数的第一行,则整个函数以“严格模式”运行。

脚本文件的变通写法:因为第一种调用方式不利于文件合并,所以更好的做法是,借用第二种方法,将整个脚本文件放在一个立即执行的匿名函数中

匿名函数:不需要调用,直接执行,可以自调用

(functiob(){
    	"use strict";
        console.log(1);
    })()
           

三、进入严格模式后发生的变化

1、全局变量声明时,必须加关键字var

正常模式

a=20;
	console.log(a)//20
           

严格模式

"use strict";
	a=20;
	console.log(a);//a is not defined,所以声明时要加var
           

2、函数内不允许出现重名参数

正常模式

function fn(a,b,b){
	console.log(a,b)
	}
	fn(1,2,3)//1,3
           

严格模式

"use strict";
	function fn(a,b,b){
	console.log(a,b)
	}
	fn(1,2,3)//报错
           

3、arguments对象不允许被动态改变

正常模式

function fn(a){
	a=20;
	console.log(a)//20
	console.log(arguments[0])//20
	}
	fn(10)
           

严格模式

"use strict";
	function fn(a){
	a=20;
	console.log(a)//20
	console.log(arguments[0])//10
	}
	fn(10)
           

4、this无法指向全局对象

正常模式

function fn(){
	console.log(this);//window
	}
	fn()
           

严格模式

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

以上是对严格模式的理解,如果文章中对知识点的理解有片面或者错误的地方,欢迎批评指正