重新分配作为参考传递的对象不起作用

时间:2019-04-25 07:36:44

标签: javascript node.js

我正在研究export和module.exports在Node中的区别。这个问题特别有用:module.exports vs exports in Node.js。简而言之,这就是发生的情况:

//require function

module = {
   exports:{}
}

(function(exports){
    exports = 1; //contents of module
})(module.exports)

如果您忘记了该节点,只需编写一个具有相同功能的简单功能即可:

newmodule = {exports:{}};
function reassign(exports){
    exports = ()=>{console.log("123")}
    //or exports = 1;
    //or exports = "Hello";
}

reassign(newmodule.exports)
console.log(newmodule.exports) // prints empty object, reassign failed

您会发现newmodule.exports确实从未被重新分配。不知道我是否会冻结大脑,但是newmodule.exports已通过引用传递。但是,重新分配不会反映在传递的对象newmodule.exports上。这是为什么?

扩展传递的对象可以正常工作

function reassign(exports){
    exports.somefunc = ()=>{console.log("123")} // works as expected
}

0 个答案:

没有答案