JavaScript中的作用域
作用域
一个变量如果定义在函数里,那么在函数外面是不可以访问的。
function f(){ var b = 1; }
//不可访问
document.write(b);
但是如果你一个变量定义在一个代码块中(一个if或者for 循环里)在代码块外面是可以访问的。
for (var i = 0; i < 3; i++) {}
//可访问
document.write(i);
JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里
function fun01() {
var a = 2;
//JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里
document.write(fun02());
}
function fun02() {
//a没有定义
return a;
}
fun01();
不使用var关键字定义的变量, 相当于是全局变量
//var a = 33;
//不使用var关键字定义的变量, 相当于是全局变量
function fun01() {
//没有使用var关键字定义变量a
a = 2;
document.write(fun02());
}
function fun02() {
return a;
}
fun01();
作用域链
如果你在f()里面再定义一个函数n(),n()将可以访问在自己作用域内的变量在加上其父作用域的变量,这被称为“作用域链“,并且这个链条可以想多长就可以有多长
var a =1;
function f(){
var b = 1;
function n(){
var c = 3;
}
}