• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

JavaScript作用域小题

function aaa(){                        var a=b=10;                }                aaa();                alert(b);                alert(a);运行代码 b的值为10,而a is not defined;
疑惑:a和b同为定义在aaa()函数里的局部变量。为何b为10、而a报错?

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与4

函数会开辟出一个新的作用域,在这个作用域里可以新创建变量,也就是里面的a,b。
但这里有个特殊情况,

vara=b=10;这种写法中a是局部变量没有问题,但b会当做全局变量去创建,所以就使得b可以在aaa函数之外被调用,而a作为一个局部变量,会在aaa函数返回后销毁,所以无法被alert。

使用道具 举报

连等会让b变成全局变量,你可以试试在函数里分别输出a,b,然后在函数外面再输出一遍

使用道具 举报

这就相当于var a=b;b=10;

使用道具 举报

这个是变量声明提升好不好!(hoisting)
上面的变量声明实际上是这样的:
var a,b;
a=b;//把b的值赋给a,此时b没有值,那么a就是undifined
b=10;
javascript中把除了在函数中声明的变量以及没有用var声明的变量作为全局变量,此处的b典型的是函数内的局部变量,比如:function add(){
a=10
}//此处的a就是全局变量,随时可以调用。
千万别搞错了!这是初学者经常犯的错误!把这些小细节消化了,冲击百万年薪吧。哈哈

使用道具 举报

发新帖

发布任务需求已有1031289位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!