严格模式

99 阅读1分钟
定义
  1. 消除了js语法的一些不合理、不严谨之处,减少了一些怪异行为
  2. 消除代码运行的一些不安全之处,保证代码的安全
  3. 提高编译器效率,增加运行速度
开启严格模式

严格模式可以应用到整个脚本或个别函数中

1、为脚本开启严格模式

在所有语句之前放一个特定的语句“use strict”;

	<script>
		'use strict'
		//下面的js 代码就会按照严格模式执行
	</script>
2、为函数开启严格模式
		function fn() {
			'use strict'
			//下面的js 代码就会按照严格模式执行
		}
3、严格模式的变化
1、变量规定
  1. 正常模式-->变量未声明赋值-->全局变量 严格模式禁止这种做法,必须var先声明,然后再使用
  2. 不能随意删除已经声明好的变量 delete num
2、this指向
  1. 全局作用域下函数中的this指向windows对象
  2. 严格模式下全局作用域中的函数this是undefined
3、严格模式下,如果构造函数不加new调用,this会报错
	<script>
		'use strict'
		function Star() {
			this.sex = '男';
		}
		Star();
	</script>
        
        //Uncaught TypeError: Cannot set properties of undefined (setting 'sex')
    at Star
4、严格模式下,定时器this还是指向window
5、函数变化
  1. 不允许参数同名
  2. 函数必须声明在顶层,不允许在非函数的代码块内声明函数
	<script>
		'use strict'
		if (true) {
			function f() {}//语法错误
			f()
		}
	</script>