js 全局变量、局部变量的作用域;变量声明提前;无块级作用域

  • js 变量的三个重要点:

1. js 无块级作用域,大家都懂的;
2. 局部变量声明提前: 

因为没有块级作用域,所以 js 里局部变量的声明会提前到函数最开始的地方(但是初始化不会提前,切记);

3. js 允许变量重复声明:

同一个作用域上的相同的变量名,后者会覆盖前者;不同作用域之间不会影响(既:如果局部变量名和全局的重复,互不影响)

代码示例:

<!-- 1、2、3 示例 -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <script type="text/javascript">
        var param = "全局1";
        var param = "全局2";

        (function test() {
            alert("第一次 alert:" + param);

            {
                var param = "局部";              // 无块级作用域, 第一次 alert 的就是这里声明的 param;
                                                 // 只是声明提前, 但是初始化还是在这个位置,所以第一次 alert 的值是 undefined;
                                                 // 这里初始化以后,第二次 alert 的才是 "局部"
            }

            alert("第二次 alert:" + param);
        })();

        alert("第三次 alert:" + param);         // 虽然调用了 test, 但是不影响全局 param 的值, 所以第三次 alert 是 "全局"
                                                 // 全局声明两次 param, 但是 alert 的是 第二次的 "全局2"
    </script>
</body>
</html>



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值