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

JavaScript变量提升求解惑

JavaScript变量提升求解惑

一只废喵 2017-02-10 10:40:11
var a = 1; function b() { a = 10; return; function a() {} } b(); alert(a); 为什么弹出的是1
查看完整描述

1 回答

已采纳
?
Ewall_

TA贡献27条经验 获得超9个赞

1、函数声明首先被提升,然后才是变量。

2、在函数域里定义一个和外部变量一样名称的变量时,变量的声明会提升至第一句,赋值则不会变

所以就相当于:

function b(){
    function a(){}//b函数作用域里有一次函数声明提升
    a=10;
    return;
}
var a;
//以上是函数声明和变量声明的提升;但是变量声明时,赋值则不会变,仅是提升而已
a=1;
b();
alert(a);//1


查看完整回答
反对 回复 2017-02-10
  • 1 回答
  • 0 关注
  • 1342 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信