1.??????? 全局变量:
myglobal = "hello"; // antipattern
console.log(myglobal); // "hello"
console.log(window.myglobal); // "hello"
console.log(window["myglobal"]); // "hello"
console.log(this.myglobal); // "hello"
?
2.???? result 为一个隐含的全局变量
function sum(x, y) {
// antipattern: implied global
result = x + y;
return result;
}
修改方法:把 result 使用 var 变成函数范围内局部变量
function sum(x, y) {
var result = x + y;
return result;
}
?
3.???? ? 链式分配 作为var 声名的一部分
// antipattern, do not use
function foo() {
var a = b = 0;
// ...
}
?
4.?????? 先声名局部变量,链式分配这些局部变量变成全局变量:
function foo() {
var a, b;
// ...
a = b = 0; // both local
}
?
5.?????? 使用 var 声名的全局变量无法使用 delete 删除
// define three globals
var global_var = 1;
global_novar = 2; // antipattern
(function () {
global_fromfunc = 3; // antipattern
}());
// attempt to delete
delete global_var; // false
delete global_novar; // true
delete global_fromfunc; // true
// test the deletion
typeof global_var; // "number"
typeof global_novar; // "undefined"
typeof global_fromfunc; // "undefined"
?
6.?????? 访问全局对象:
var global = (function () {
return this;
}());
?
?