为了账号安全,请及时绑定邮箱和手机立即绑定

关于变量的问题

关于变量的问题

jeck猫 2018-10-09 13:18:27
        var a=1;        function cc(){            a=2;            return a;            function a(){}这个地方是什么意思有什么意义        }        cc();        console.log(a);为什么会输出1
查看完整描述

1 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

这主要是基础知识的应用了。JavaScript对于作用域(Scope)和上下文(Context)的实现是这门语言的一个非常独到的地方,函数可以接收不同的的上下文和作用域。

几个知识点:

  1. 函数体内部,局部变量的优先级比同名的全局变量高。

  2. 函数中声明的变量在整个函数中都有定义。

  3. 函数声明提升,且函数声明提升优于变量声明提升。

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


查看完整回答
反对 回复 2018-11-16
  • 1 回答
  • 0 关注
  • 450 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号