Java教程

ES5下javascript的严格模式

本文主要是介绍ES5下javascript的严格模式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

ES5的严格模式

为什么要设立严格模式

  1. 消除javascript语法不合理、不严谨的地方,减少一些怪异行为
  2. 保证代码运行安全
  3. 提高编译效率,增加运行速度

严格模式使用方法

1.全局
“Use strtic”
n=10;
console.log(n);
2.局部
function fn(){
	“Use strtic”;
	n=10;
	console.log(n);
}

严格模式规则

1. 不可以省略var声明变量
function show() {
            "use strict";
            var a = uname = "刘德华";
            console.log(uname);
        }

报错: uname变量没有声明

2. 禁止函数使用this指向全局变量

非严格模式函数内的this指向window,严格模式下this指向undefine

此处补充一下几种场景下this的指向

  1. 函数内部的this指向window,严格模式下指向undefine

  2. 事件绑定的this默认指向当前被绑定的元素

  3. this在对象的函数里默认指向当前对象

  4. this在箭头函数中默认指向上下文对象

  5. 构造函数有显示返回值且该值是对象时,this指向这个这个对象;

    如果返回的不是对象或者没有返回值时,this指向实例。

  6. 定时器内的this指向window,因为定时器方法时定义在window下的

3. 禁止函数内使用八进制方法

这个不必多说

4. 不允许在非函数的代码块内声明函数
“use strict"
if (true) {
            function fn4() {
                console.log(111)
            }
        }

会报错Octal literals are not allowed in strict mode.

5. 严格模式下arguments变量与形参不再同步

不使用严格模式:

function fn5(num){ 
            num=20;
            console.log(arguments[0]);
            console.log(num);
        }
         fn5(10);//20,20

使用严格模式改变形参:

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

使用严格模式改变arguments

function fn5(num){
            "use strict";
			arguments[0]=20;
            console.log(arguments[0]);
            console.log(num);
        }
         fn5(10);//20,10
这篇关于ES5下javascript的严格模式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!