如果无法访问 JavaScript 模块中的参数

if can't access parameter in JavaScript module

您好,我对 JavaScript 模块中的 if 范围有疑问。 这是我的代码的模型:

module.exports = {
caser(nb){
if(0 === 0){
nb = 3+2
}
}
}

该函数是从另一个 JavaScript 文件调用的。然而,当我这样做时,Nb 并没有改变。 我的编辑器(visual studio 代码)将 nb 标记为未使用。这个我试过了:

module.exports = {
caser(nb){
let number = nb
if(0 === 0){
number = 3+2
}
}
}

这似乎仍然没有改变 nb 的值。有谁知道这个问题的解决方案? 提前致谢。

重新分配nb(或number)只会改变那些变量名指向当前函数的内容。听起来您需要做的是 return 更改后的值,并让函数的使用者使用它来重新分配它传入的值。类似于:

// consumer file:
const { caser } = require('./foo');

let nb = 5;
nb = caser(nb);
module.exports = {
    caser(nb) {
        if (0 === 0) {
            nb = 3 + 2
        }
        return nb;
    }
}

避免必须在使用者中重新分配的唯一方法是让使用者改为传递一个对象,然后改变该对象。

// consumer file:
const { caser } = require('./foo');

const objToPass = { nb: 5 };
caser(objToPass);
module.exports = {
    caser(objToPass) {
        if (0 === 0) {
            objToPass.nb = 3 + 2
        }
    }
}