聊一聊JS变量

无论在哪门语言中,变量都是基础,越是基础,越是重要!
一.js变量基础
1.变量的类型
java的中的类型由声明的类型决定:
int a = 1;
double b = 2.22;
boolean c = true;
js中的变量有赋值决定:
var a = 1;
var b = 2.22;
var c = true;
2.全局变量和局部变量
在方法内声明的叫局部变量,在全局声明的叫全局变量
全局变量和局部变量的分界线一般是方法,如:

<script>
for(var i = 0 ; i < 3 ; i ++){

  }
       alert(i);//i是全局变量
function a(){
    var j = 3;//j是局部变量
}
</script>

3.变量的声明和赋值

        function a(){
            var b = 1;//声明并赋值
            c = 2;//只赋值,未声明;这时,c会向外层寻找自己的声明,如果没有找到,会生成一个window.c(前面不写var可并不一定是全局变量哦)
            alert(b + "----" + c);//1 ---- 2
        }
        a();
        alert(c);//2   只在a函数中赋值了,但是最终没声明,在window下生成一个window.c
        alert(window.b);// undefined  在a方法中声明的,在外面访问不到
        alert(b);//b is not defined错误   在a方法中声明的,在外面访问不到
        //注意:以window.xxx引用全局变量,找不到会返回undefind
        //直接xxx引用某变量找不到会报xxx is not defined错误 

二.js变量拓展 — 函数中的变量
js函数的运行分为:词法分析期和运行期

/***************例题1****************/
//词法分析期:
function f(b){1.函数刚开始运行时,会生成一个AO对象 ; 2.将函数的形参赋给AO,这时该形参的值为undefined;紧接着将该形参赋值,这时,b = 2(这个时候还是词法分析期);
    var b;//3.将var声明的变量赋值给AO,覆盖掉形参;这个时候,AO={b = undefined}
    alert(b);
    function b(){//4.将函数赋值给AO,覆盖掉var声明的变量

    }
    alert(b);
}

f(2);
//这里没有赋值,所以赋值期也就没有做操作
//打印结果:function b(){}    function b(){}

/***************例题2****************/
function f(b){1.函数刚开始运行时,会生成一个AO对象 ; 2.将函数的形参赋给AO,这时该形参的值为undefined;紧接着将该形参赋值,这时,b = 2(这个时候还是词法分析期);
    var b = 5;//3.将var声明的变量赋值给AO,覆盖掉形参;这个时候,AO={b = undefined}
    alert(b);
    function b(){//4.将函数赋值给AO,覆盖掉var声明的变量

    }
    alert(b);
}

f(2);
//赋值期:var b = 5; b的值为functino b(){};将其无情的覆盖掉,b = 5;
//打印结果:5  5

词法分析期:
其实就是函数中变量的声明期,一个方法里面好多地方声明了一个变量我该听谁的?于是就有了一个先后顺序:
1)分析参数
2)分析var声明
3)分析函数声明
赋值期:
其实和普通的赋值没什么区别,你再怎么声明,最终的值还要看赋值的.如果没有赋值,那就看声明时的默认值了.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值