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

一个javascript变量域的问题

一个javascript变量域的问题

MMMHUHU 2018-12-06 15:33:49
;是alert(cc),不知道为什么显示不出来 <script language="javascript">    function aa(bb){        bb ++;    }    function zz(){        var cc = 1;        aa(cc);        alert(cc);    }    zz();</script> 弹出来的是1,意料之中 <script language="javascript">    function aa(bb){        bb.setDate(bb.getDate() + 1);    }    function zz(){        var cc = new Date();        aa(cc);        alert(cc);    }    zz();</script> 这个为什么cc会加上一天呢?
查看完整描述

3 回答

?
素胚勾勒不出你

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

关键在与你的 var cc = new Date();这句话,这句话看似确实是定义了一个局部变量cc,但事实并非如此;事实是这里定义的CC是一个日期对象实例。为说明这一点,你可以用typeof(cc)检查下类型,你会发现这里返回的是object类型。因此答案也就明了了。这里既然是object类型了,那此处调用的aa这个方法,这就和咋们经常使用的高级语言传递一个对象实例是一样的意思了(也就是2楼写的那个代码了)

后话:你也可以去检查下你alert出1的代码,他返回的应该是值类型,而并非object类型。

查看完整回答
反对 回复 2018-12-24
?
慕娘9325324

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

因为那是一个引用值

查看完整回答
反对 回复 2018-12-24
?
忽然笑

TA贡献1806条经验 获得超5个赞

  bb.setDate(bb.getDate() + 1);..这里不是加了一吗?...

你的代码就是这个意思啊

  var cc = new Date();
 cc.setDate(cc.getDate() + 1);

查看完整回答
反对 回复 2018-12-24
  • 3 回答
  • 0 关注
  • 456 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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