历史
- ECMAScript
- 1997 1.0
- 1998 2.0
- 1999 3.0
- 2007 4.0
- 2009 5.0 发布 Harmony -> 1/2 JS.next 1/2 JS.next.next
- 2011 5.1 ISO 国际标准
- 2013 ES6 = js.next ES7 = js.next.next
- 2013 ES6 草案发布
- 2015 ES6 发布 ECMAScript 2015
ES5 严格模式
写法
// 写在所有代码的最上方
'use strict'; // 严格模式 字符串
// 写在函数内部第一行(推荐)
function test() {
'use strict';
}
⭐️ with 可以改变作用域
var a = 1;
var obj = {
a: 2
}
function test() {
var a = 3;
with(test) {
console.log('test->>', a);
}
with(window) {
console.log('window->>', a);
}
with(obj) {
console.log('obj->>', a);
}
}
test();
严格模式下报错
'use strict';
var a = 1;
var obj = {
a: 2
}
function test() {
var a = 3;
with(test) {
console.log('test->>', a);
}
}
test();
callee / caller 严格模式下报错
'use strict';
function test() {
console.log(arguments.callee)
}
test();
'use strict';
function test() {
test2();
}
function test2() {
console.log(test2.caller)
}
test();
严格模式下,变量需要显示声明
'use strict';
function test() {
var a = b = 1;
}
test();