我試圖在模塊部分運行Eloquent Javascript中的這個簡短程序。Javascript - 在Node.js中導出vs瀏覽器
var weekDay = function() {}();
(function(exports) {
var names = ["Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday"];
exports.name = function(number) {
return names[number];
};
exports.number = function(name) {
return names.indexOf(name);
};
})(this.weekDay = {});
console.log(weekDay.name(weekDay.number("Saturday")));
正確的輸出應該是// -> Saturday
。
它在瀏覽器中完美工作。然而,當我嘗試在節點解釋器中運行它,我得到這個錯誤:
TypeError: Cannot read property 'name' of undefined
我只能假設它是與節點的方式處理出口關鍵字。有人能幫助我至少對這種行爲有一個粗略的理解嗎?
它可能是'this.weekDay'。嘗試將其改爲「weekDay」。 – Louy
另外第一行是無用的。只要保持'var weekDay;'。 – Louy
在Node模塊中,'this'不是'global',而是'exports'。 –