欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

严格模式

程序员文章站 2022-05-01 22:51:14
...

javascript除了提供正常的模式外,还提供了严格模式,ES5的严格模式是采用有限制的javascript变体的一种方式,即在严格条件下运行的Js代码。
严格模式在IE10以上版本浏览器才会支持,旧版本浏览器会被忽略。

一、严格模式对正常javascript语法做了一些更改;
1、消除了javascript语法的一些不合理、不严谨之处,减少一些怪异行为。
2、消除代码运行的一些不安全之处,保证代码运行安全。
3、提高编译器效果、增加运行速度。
4、禁用了在ECMAScript的未来版本可能定义的语法,为未来新版本的javascript做好铺垫。比如一些保留字:class、enum、export、extends、import、super不能做变量名。

二、开启严格模式
严格模式可应用到整个脚本或个别函数中,因此在使用时,我们可以将严格模式分为脚本开启严格模式和为函数开启严格模式。
1、为脚本开启严格模式需要在所有语句前放一个特殊语句“use strict”

<script>
	'use strict';
	// 下面的js 代码会按照严格模式执行代码
</script>

2、为函数开启严格模式需要将‘use strict’声明放在函数体所有语句之前。

<script>
	function fn() {
		'use strict';
		//下面按照严格模式
	}
	function fn() {
		'use strict';
		//里面的代码按照普通模式
	}
</script>

三、严格模式的变化
3.1、变量
1、严格模式变量必须先声明再使用
2、严禁删除已经声明的变量

3.2、严格模式的this指向
1、以前在全局作用域函数的this指向window
2、严格模式下全局作用域中函数this指向undefined.
3、以前构造函数不加new也可以调用,当普通函数,this指向全局
4、严格模式下构造函数不加new调用,this会报错。
5、new实例化的构造函数指向创建的对象实例。
6、定时器的this还是window
7、事件、对象还是指向调用者

3.3、函数变化
1、函数不能有重名参数
2、函数必须声明在顶层(不允许在非函数代码块中声明函数)

相关标签: js js