js基础之函数全局变量与局部变量区别
// 一.全局变量与局部变量:局部变量是指只能在本变量声明的函数内部调用。全局变量时整个代码中都可以调用的变量
// 单单从字面上很难理解 来我们看实际代码:
function myName() {
i = 'xiaoming';
}
myName();
function sayName() {
alert(i);
}
sayName();
/*输出结果为:xiaoming
现在来修改上面的代码:*/
function myName(){
i="xiaoming";
}
myName();
function sayName(){
alert(i);
}
sayName();
// 此时,游览器将没有任何输出结果,因为i 是在函数myName中定义的,所以它只是myName的局部变量,不可能被外部调用。
// 同理再改
function myName(){
i="xiaoming";
}
function sayName(){
alert(i);
}
sayName();
myName();
// 这种情况下还是不会输出任何结果,javascript代码的执行时从上到下的,在sayName()函数被调用时会检查变量i的值,此时函数myName尚未执行,也就是说i还没有被赋值,所以不会输出任何结果。
// 为了方便理解 再举一例
var i="xiaoming";
function loveName(){
i="xiaohong";
}
loveName();
function myName(){
alert(i);
}
myName();
// 结果是xiaohong
// 首先,i的原始值是xiaoming,但是当调用loveName()函数之后,将i的值改为xiaohong,所以最后的输出结果是xiaohong。
var i = 'xiaoming';
function myloveName() {
var i = 'xiaohong';
}
myloveName();
function myName() {
alert(i);
}
myName();
// 此时的结果就是xiaohong了,因为代码中的两个i不一样,一个是全局的,一个是局部的,也可以这样理解,虽然两个i的名字一样,但是这两个i的本质却不一样,好像有两个名字一样的人一样,虽然名字一样,但却不是同一个人。
var i = 'xiaoming';
function myloveName() {
i = 'xiaohong';
alert(i);
}
myloveName();
// 结果是:xiaohong
// 如果把alert提前呢?
var i = 'xiaoming';
function myloveName() {
alert(i);
i = 'xiaohong';
}
myloveName();
结果是:undefined
如果代码是这样:
var i = 'xiaoming';
function myloveName() {
alert(i);
}
myloveName();
// 结果是:xiaoming
// 为什么会发生上面undefined情况,因为代码的执行顺序是从上到下的,在输出i之前并没有对i定义。所以从这里可以看出,使用代码的时候,变量的声明一定要放到代码的前面,以避免出现类似的问题!

浙公网安备 33010602011771号