现在的程序基于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();