作用域
javascript没有块级作用域
if (2 > 1) {
var myName = 'c.c.';
}
console.log(myName); // c.c.
for (var i = 0; i < 10; i++) {
}
console.log(i); // 10
只有函数可以创建的作用域
// 全局作用域
var myName = 'c.c.',
myYear = '1992';
function base() {
// base作用域
var myName = 'v.v.',
myYear = '1993';
function fn() {
// fn作用域
var myName = 'q.q.',
myYear = '1994';
}
}
// 结论 :作用域有上下级的关系,上下级关系的确定就看函数是在哪个作用域下创建的
// 结论 :作用域最大的用处就是隔离变量,不同作用域下同名变量不会有冲突
// 建议 :全局代码要在代码前端声明,函数中要在函数体一开始就声明好。除了这两个地方.
// 建议 :其他地方都不要出现变量声明。而且建议用“单var”形式
var x = 10;
function foo() {
console.log(x);
}
function fn() {
var x = 20;
(function() {
foo();
}());
}
fn(); // 10
// 结论 :要到创建这个函数的那个作用域中取值——是“创建”,而不是“调用”
网友评论