一、变量的作用域
变量的作用域无非就是两种:全局变量和局部变量。
javacript语言的特殊之处,就在于函数内部可以直接读取全局变量。
js代码:
变量的作用域无非就是两种:全局变量和局部变量。
javacript语言的特殊之处,就在于函数内部可以直接读取全局变量。
js代码:
var n = 9;
function f1() {
alert(n);
}
window.onload = f1(); //弹出窗口显示9
另一方面,在函数外部自然无法读取函数内的局部变量。
js代码:
function f1() {
var n = 9;
}
alert(n); //ReferenceError: n is not defined
这里有一个地方需要注意,函数内部声明变量的时候,一定要使用var命令。如果不用的话,实际上声明了一个全局变量?//去掉var后还是相同结果
js代码:
function f1(){
n = 9;
}
f1();
alert(n); //弹出个窗口显示9
--------------------------------------------------------------------------------------------------------
二、如何从外部读取局部变部变量?
出于种种原因,我们有时候需要得到函数内的局部变量。但是,前面已经说过了,正常情况下,这是办不到的,只有通过变通方法才能实现。
那就是在函数的内部,再定义一个函数。
js代码:
function f1() {
n = 9;
function f2() {
alert(n);//没有弹出窗口,访问不了?
}
}
window.onload = f1();
在上面的代码中,函数f2就被包括在函数f1内部,这时f1内部的所有局部变量,对f2都是可见的