Skip to content

函数参数

题目

运行以下代码,会输出什么

js
function changeArg(x) { x = 200 }

let num = 100
changeArg(num)
console.log('changeArg num', num)

let obj = { name: '锋哥' }
changeArg(obj)
console.log('changeArg obj', obj)

function changeArgProp(x) {
    x.name = '张三'
}
changeArgProp(obj)
console.log('changeArgProp obj', obj)

分析

调用函数,传递参数 —— 赋值传递

js
function fn(x, y) {
    // 继续操作 x y
}
const num = 100
const obj = { name: '锋哥' }
fn(num, obj)

以上代码相当于

js
const num = 100
const obj = { name: '锋哥' }

let x = num
let y = obj
// 继续操作 x y

解题

执行题目代码分别输出 100 {name: '锋哥'} {name: '张三'}

扩展:

eslint 规则建议:函数参数当作一个 const 常量,不要修改函数参数 —— 这样代码更易读