关于变量的问题

        var a=1;

        function cc(){

            a=2;

            return a;

            function a(){}这个地方是什么意思有什么意义

        }

        cc();

        console.log(a);为什么会输出1


jeck猫
浏览 451回答 1
1回答

MMTTMM

这主要是基础知识的应用了。JavaScript对于作用域(Scope)和上下文(Context)的实现是这门语言的一个非常独到的地方,函数可以接收不同的的上下文和作用域。几个知识点:函数体内部,局部变量的优先级比同名的全局变量高。函数中声明的变量在整个函数中都有定义。函数声明提升,且函数声明提升优于变量声明提升。JavaScript 解释器“前瞻性”查找所有变量定义,把它们“提升”到函数顶部。所以上面的代码可等价于:var a;a = 1;function cc(){    var a // 这个a是函数声明的提升,优先变量的。所以cc中的a变为局部变量。    a=2;    a = function (){}  // 这个函数本来写在retun 后面,但是声明是有效的。    return a;}cc(); // 返回一个在cc中的空函数console.log(a);// 等于当前作用域的a=1
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript