【初级】函数参数值传递问题

题 1: 代码执行完后ab的值是什么?

let a = [1, 2, 3]
let b = 1

const foo = (obj, num) => {
    obj = [5, 4, 3]
    obj[1] = 999
    obj = [5, 4, 3]
    num = 2
}

foo(a, b)
console.log(a, b);

// 结果: [1, 2, 3]  1
1
2
3
4
5
6
7
8
9
10
11
12
13
14

题2:给出a(1)返回值

function a(x, f=()=>x) {
    var x;
    y = x;
    x = 2;
    return [x,y,f()];
}
a(1)
1
2
3
4
5
6
7
// 打印结果是:
2 1 1
1
2
  • B - 能够正确给出题目1的输出
  • A - 解释JS函数传参的逻辑, 以及正确阐述代码过程中各变量的值
  • S - 正确给出题目2的返回 并阐述流程