是关于最后的测试题中的一道题,想不明白了

是关于最后的测试题中的一道题,想不明白了

题目代码如下:

function add(num1, num2){
    if( arguments.length !== arguments.callee.length ){
        throw new Error('asda');
    }
    return num1 + num2;
}
document.write( add(1, 3) );
var fn = add;
add = 1;
document.write( fn(1,3) );

为什么最后返回的结果是:4,4;而不是“4,报错”呢?

我的理解是:将add赋值给fn,那么它们两者指向的是同一个对象,现在add被改变了,fn不是也应该随着改变了吗?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

将add赋值给fn,那么它们两者指向的是同一个引用类型,add=1,只不过是add变量被重新赋值了,并没有改变原有的引用类型,所以结果是4,4。自己可以再想一想!或者是看一下这个链接:http://blog.csdn.net/why_222/article/details/75088239,

可能会对你有帮助哦!ヾ(◍°∇°◍)ノ゙

  • 桔七 提问者 #1
    其实写完问题和问题描述后,就已经明白了。只是想看一下其他小伙伴是怎么来理解这个东西的!谢谢啊
    2018-02-06 14:57:01
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
HTML5与CSS3实现动态网页 2018
  • 参与学习       1887    人
  • 提交作业       4643    份
  • 解答问题       5760    个

有HTML和CSS基础,却不知道如何进阶?本路径带你通过系统学习,完成从“会做网页”到“做出好的动态网页”的蜕变,迈出成为前端工程师的第一步。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师