如何在JavaScript函数外部通过console.log打印函数参数
核心原因
numA和numB是somar函数的局部作用域变量,仅在函数内部的执行上下文中可访问,外部作用域不存在这两个变量的引用,直接打印自然返回undefined,这是JavaScript作用域规则的正常表现,不属于代码错误。
实现方案
可根据实际使用场景选择以下任意一种方式实现外部打印:
- 直接打印调用函数时传入的实参
调用函数时本身就明确传入了参数值,不需要修改函数逻辑,把实参存为外部变量即可直接打印:let somar = (numA, numB) => { //função anônima JS console.log("Somando " + numA + " com " + numB); return numA + numB; } // 提前存好要传入的参数 const paramA = 10; const paramB = 5; var resultado = somar(paramA, paramB); // 外部直接打印参数和结果 console.log('numA值:', paramA); console.log('numB值:', paramB); console.log('求和结果:', resultado); - 让函数返回参数,外部从返回结果中取值
如果不想额外维护外部参数变量,可以修改函数返回值,把参数和计算结果一起返回,外部拿到返回值后就能直接读取两个参数:let somar = (numA, numB) => { //função anônima JS console.log("Somando " + numA + " com " + numB); // 返回包含参数、计算结果的对象 return { numA, numB, total: numA + numB } } // 接收函数返回的完整结果 const res = somar(10, 5); console.log('numA值:', res.numA); console.log('numB值:', res.numB); console.log('求和结果:', res.total); - (不推荐)函数内部将参数挂载到全局作用域
如果确实需要全局任意位置访问这两个值,可以在函数内部把参数赋值给提前声明的全局变量,但这种方式会污染全局命名空间,容易引发变量名冲突,非特殊场景不建议使用:// 提前声明全局变量 let globalA, globalB; let somar = (numA, numB) => { //função anônima JS console.log("Somando " + numA + " com " + numB); // 将参数赋值给全局变量 globalA = numA; globalB = numB; return numA + numB; } var resultado = somar(10, 5); // 任意位置都可以打印全局变量 console.log(globalA, globalB, resultado);
日常开发优先选择前两种方案,代码可维护性更高,也不会埋下全局变量冲突的隐患。
内容的提问来源于stack exchange,提问作者Gabriel Nunes
相关产品推荐
相关产品推荐

