美文网首页
域解析(重要)

域解析(重要)

作者: 大庆无疆 | 来源:发表于2019-02-13 23:42 被阅读0次
    javascript代码是有上之下依次执行的,但是在执行前,先要进行域解析,之后才执行代码

    内容:

    1、变量提升:把变量的声明提升到当前作用域的最上面,不包括变量的赋值
    2、函数提升:把函数的声明提升到当前作用域的最上面,不包括函数的调用
    3、在域解析中,如果函数名和变量名相同,此时则函数优先不理解看案例2

    案例:
    案例1、
            var a = 25;
            function abc() {
                console.log(a);
                var a = 10;
            }
            abc();
    
    案例1-->域解析
            var a;  //变量提升
            function abc() {  //函数提升
                var a;//变量提升(局部变量)
                console.log(a);//这里调用的a是局部变量的a,由于a的声明虽然被提升了,但是还没有赋值,所以这里输出undefined
                a = 10; //变量的赋值位置不变。
            }
            a = 25;//变量的赋值位置不变。
            abc();//函数调用的位置不变。
    
    打印结果:
    undefined
    
    

    案例2
            console.log(a);
            function a() {
                console.log('aaaa');
            }
            var a = 1;
            console.log(a);
    
    案例2--->域解析
            function a() {      //函数提升
                console.log('aaaa');
            }
            var a;      //变量提升
            console.log(a);  因为函数名和变量名相同,函数优先,所以这里输出的是函数
            a = 1;      //这里重新将a赋值为1
            console.log(a); //这里打印的值为1
    
    打印结果:
    ƒ a() {     //函数提升
                console.log('aaaa');
            }
    1
    

    相关文章

      网友评论

          本文标题:域解析(重要)

          本文链接:https://www.haomeiwen.com/subject/zcjjeqtx.html