关于本节另一个提问里的疑问
原提问地址: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
- 参与学习 人
- 提交作业 239 份
- 解答问题 10739 个
本阶段带你深入前端开发的肌理,通过ES6基础知识和前端主流高级框架的学习,助你快速构建企业级移动webAPP应用,进入职场的终极battle
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星