关于本节另一个提问里的疑问

关于本节另一个提问里的疑问

    原提问地址:https://class.imooc.com/course/qadetail/130029
    最下面“见信”同学提供的代码:
    
    var abc= function(n=1) {    
        a = {
            c: n,
            d: 2,
            e: 3
        }
        console.log(a.c);
    }

    abc();

    这个代码试了一下,也能满足提问者的要求(就是传入c值则用传入值,没有传入值则用本身的值)
    但是我没想明白,这个function里面的(n=1)是怎么运行。
    定义函数:function abc(n = 1){}
    调用函数:abc(5)
    输出结果:5
    问题如下:
    1. 所以这个5被代入函数,成为n的实参(那就变成5=1),还是n=1的实参(就是把n=1替换成5)?
    2. 抛开这个问题本身,假设是前者的情况,5=1不成立,就是false了…(应该会报错吧)
    3. 抛开这个问题本身,假设是后者的情况,n=1被5替代,那么我的想法也应该是当c:n=1的时候,c的值才为5,而不是c:n时,为5 (有表达清楚么…换个说法就是,n=1这个整体为形参,5为实参,代码中n=1才能被5替换)。感觉这里理解会有问题,不然这段代码说不通…
    4. 另一个没想明白的是,假设调用函数不传参,a.c的值为什么是1,参考3的理解(应该是有问题地),所以没办法明白。

    因为不知道写什么代码来验证上面的理解,所以辛苦老师给个例子或者解答一下,辛苦了。
               

正在回答 回答被采纳积分+1

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

2回答
好帮手慕星星 2020-01-03 17:46:20

同学你好,理解的没有问题,很棒!

另外同学遇到问题不要着急,可以先看看问答区是否有类似提问,便于扩展思路,帮助同学快速解决。同学提的问题建议老师会进行反馈,能够帮助到同学们的,也会进行综合考虑。

祝学习愉快!

提问者 夜魇丶 2020-01-03 14:00:45

http://img1.sycdn.imooc.com//climg/5e0ed7d609b44f1407250685.jpg

想了半个小时,刚提完问题,结果发现另一个回答里面解释了等号的情况…

所以这个问题function(n=1),就是如果有传参,n值会被替换,忽略后面的=1 。

如果没有传参,就执行n=1,给n赋上默认值,然后把n值带入内部代码中。

这样理解的话就通了…(这段理解没错吧。尴尬…)

  • 提问者 夜魇丶 #1
    另外提个建议…慕课网能不能出个提问者,删除提问的功能…,或者半个小时内可以撤回提问之类的功能…我刚刚看了一下后面的编程题也有设置默认值的情况,感觉自己好蠢。。手边就有答案然后自己瞎想了半天,…好难受…感觉要抑郁了…
    2020-01-03 14:10:00
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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