ES5严格模式

现在的程序基于ES3+ES5       ES6大更新

开启严格模式

1.全局严格模式

 在script标签第一行加上'use strict';

2.局部严格模式

function test(){

  //在函数第一行加上'use strict'

  'user strict';

}

ES5严格模式的特点:

1.不支持with、arguments.callee、function.caller

2.变量赋值前,必须被声明

例子: a = 10; // 报错  必须有var声明变量

3.局部this 必须被赋值

例子:function test(){

    'use strict';

    console.log(this);//应指向window,开启严格模式返回undefined

   }

   test();

4.拒绝重复的属性和参数

with

var obj = {
      name:'张三',
      age:26
};
with(obj){
      console.log(name);//张三
      console.log(age);//26
}

arguments.callee() 方法

// arguments.callee()方法  指向函数体  做阶乘递归函数有用
function a(){
    console.log(arguments.callee);//打印函数体
}
a();

// 阶乘
var num = (function(n){
      if(n == 1){
            return 1;
      }
      return n * arguments.callee(n - 1);
}(6));
console.log(num);//720

function.caller 

// function.caller 指向执行环境 函数本身的属性
function test(){
     demo();
}
function demo(){
     console.log(demo.caller);//打印test函数体
}
test();
上一篇:JS继承的7种方式,ES5,ES6继承的区别


下一篇:Js高级-ES5