js作用域及作用域链习题分析

                                                     

           js作用域及作用域链

作用域

1.全局作用域:一个<script>标签下的区域

*<script>标签在文档位置:script标签可以放在head或body标签中

2.局部作用域:函数体内

 

*变量:未声明变量初始化为undefined

  <script>
//一个script全局作用域   函数内部:局部作用域
        //找关键字  function  var   第一次出现就储存在域解析里面并且给他初始化undefined
        //域解析结果  a=undefined
        // var a=10;
        console.log(a);//undefined  代表没有生命
        var a=10;//a=10;再次赋值
        //后声明  undefined字符串
</script>

   域解析过程:解析代码,首先找到该域内的function关键字,将该函数进行储存,若出现重名函数,后声明的函数覆盖先声明的函数;然后找到该域内的var关键字,若该变量名已经被保存为函数或另一个变量则什么都不发生,否则储存该变量,并将它的值初始化为undefined

作用域练习题详解


    <script>
//1.
        var a=1;   
function fn1(){ 
    console.log(a); //undefined
    var a = 2; //在函数体没用就直接销毁
}
fn1();//1---拿的全局变量
console.log(a);//1---还是全局变量

//2.

var a=1;   
function fn1(){ 
    console.log(a); //1---拿到的全局变量
    a = 2; //修改全局
}
fn1();//2---拿到的全局变量
console.log(a);//2修改后的全局变量

//3.
var a=1;   
function fn1(a){ //var a
var a;//undefined
    console.log(a); //通过作用域链去找全局变量
    a = 2; 
} 
fn1();//1:找全局的
console.log(a);//1


//4.
var a=1;   
function fn1(){ 
    console.log(a); //1
    a = 2; 
}
fn1(a);//障眼法  存在arguments对象
console.log(a);//2
    </script>

   3.到同级或低级作用域找变量


    <script>
        //修改全局变量   获得作用域
        var b;
        function fn1(){
            var a=10;
            b=a;
        }
        fn1();
        alert(b);
       // 同级获取作用域变量
        var b;
        function fn1(){
            console.log(b);
}


function fn2(){
            var a=10;
            b=a;
        }
        fn2();
        fn1();
//传参数方法

        function fn1(a){//var a;形参
            console.log(a);
        }
        function fn2(){
            var a=10;
            fn1(a);//a=10实参
        }
        fn2();
        
    </script>
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值