题目 10 / 14
修改参数会改变外层的基本类型变量吗?
知识点: 函数调用
参数接收数字值的副本,并保存在独立的函数绑定中。
使用执行可视化器解题在下方逐步观察每个绑定、函数调用和控制台输出。预测输出结果
为什么函数内外两次 console.log 会输出不同数值?
let a = 1
function b(a) {
a = 2
console.log(a)
}
b(a)
console.log(a)查看答案与完整解析
正确输出
2
1为什么会这样
求值 b(a) 时先读取外层的数值 1,再用这个值初始化名为 a 的参数绑定。
函数内部 a = 2 修改的是参数绑定,所以内部输出 2。
外层 let 绑定是另一个独立绑定,函数返回后仍然保存 1。
这道题考察什么
- 实参求值
- 参数初始化
- 独立词法绑定
运行环境前提
本题使用基本类型。传入对象仍然是复制一个值,只是该值是对象引用。