预解析 和作用域 练习题

本文探讨了JavaScript中变量的作用域、声明以及预解析的概念。通过示例解释了函数内部和外部变量的访问规则,包括var关键字导致的变量提升现象。同时,分析了不同变量在函数内的声明和使用,以及如何影响输出结果。最后,提出了一个关于变量覆盖和作用域的思考题,引发读者对JavaScript变量和作用域理解的深入思考。
摘要由CSDN通过智能技术生成

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Document</title>

</head>

<body>

</body>

<script type="text/javascript">

    //1. 

    // var num = 10;

    // fn1();

    // function fn1() {

    //     console.log(num);

    //     var num = 20;

    // }

    // 因为局部变量定义了 var num =20 所以不用全局变量 但是局部变量 提前预解析 把var num 提前到输出之前 但是 没有赋值 所以

    // 输出 undefined

    //2. 

    // var a = 18;

    // fn2();

    // function fn2() {

    //     var b = 9;

    //     console.log(a);

    //     console.log(b);

    // }

    // 因为 全局变量 定义了 var a = 18 所以 console.log(a)输出 18

    // 因为 局域变量 定义了 var b = 9 所以输出 console.log 输出 9

    //3.

    fn3();

    console.log(c);

    console.log(b);

    console.log(a);

    function fn3() {

        var a = b = c = 9;

        console.log(a);

        console.log(b);

        console.log(c);

    }

    // 因为局域变量定义了 var a =9  b=9  c = 9  所以第一次输出 9, 9 ,9 

    // 第二次输出 因为 b =9 c=9 可以用作全局变量 var a =9 在局部定义了 所以 第二次输出 9 ,9 a报错

    //4. 思考题

    var a = 4;

    console.log(a); //4

    a = 6;

    console.log(a); //6

    function a() {

        console.log('哈');

    }

    a(); //哈

    a = 10;

    console.log(a); //报错

</script>

</html>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值