前端第一周,Javascript--全局变量和局部变量重名

当 全局变量 和局部变量 重名时:

         在全局作用域中没有什么冲突影响,访问到肯定是:全局变量。

        但是  !在局部作用域,优先访问到的是:局部变量,除非在局部作用域中,没有这个(var)名字的局部变量,访问到的是全局变量。  

   //  1.全局变量

    var num1 = 10;

    console.log(num1);//10

    var num2 = 20;

    console.log(num2);//20

    var num3 = 30;

    console.log(num3);//30


 

    //  2.局部变量

    function fn1(num2) {

        console.log(num1);//undfined

        console.log(num2);//40

        //局部变量

        var num1 = 50;

        console.log(num1);//50

        console.log(num2);//40

        console.log(num3);//30

        //改变局部变量的值

        num1 = 50;

        console.log(num1);//50

        num2 = 60;

        console.log(num2);//60

        num3 = 70;

        console.log(num3);//70 已经改变全局变量的值 现在是70

        console.log(window.num1);//10

        console.log(window.num2);//20

        console.log(window.num3);//70

    }

    fn1(40);

    console.log(num1);//10

    console.log(num2);//20

    console.log(num3);//70

    console.log('-----------------华丽的分割线--------------');

    console.log(n1);//undefined

    var n1 = 1;

    console.log(n1);//1

    function fn2(n1) {

        console.log(n1);//undefined

        var n1 = 3;

        console.log(n1);//3

        n1 = 4;

        console.log(n1);//4

        console.log(window.n1)//1;

    }

    fn2(2);

    console.log(n1);//1

      如果声明变量没有使用var关键字,则声明的变量是一个全局变量。

如果在函数内部声名变量没有使用var关键字:

        1.首先会查找  函数在内部 是否存在用var关键字声明过这个变量,如果有就是这个局部变量的更改。

        2.如果没有就会向上层作用于查找是否存在 用var关键字声明过这个变量,如果有就是这个局部变量的更改。

      3.如果没有值直接就是一个全局变量,但是这个全局变量只能存在变量赋值后面使用,在之前使用就会报错。   

 //console.log(s1);//Error: s1 is not defined

    s1 = 6;

    console.log(s1);//6

    function fn3() {

        console.log(s1);//6

        //console.log(s2);// Error: s2 is not defined

        s2 = 8;

        console.log(s2);//8

    }

    fn3();

    console.log(s2);//8

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值