相关疑难解决方法(0)

node.js中的require()如何工作?

我试过这个:

// mod.js
var a = 1;
this.b = 2;
exports.c = 3;

// test.js
var mod = require('./mod.js');
console.log(mod.a);    // undefined
console.log(mod.b);    // 2
console.log(mod.c);    // 3, so this === exports?
Run Code Online (Sandbox Code Playgroud)

所以我想象require()可能是这样实现的:

var require = function (file) {
    var exports = {};
    var run = function (file) {
        // include "file" here and run
    };
    run.apply(exports, [file]);
    return exports;
}
Run Code Online (Sandbox Code Playgroud)

是对的吗?请帮我理解require(),或者在哪里可以找到源代码.谢谢!

javascript this require apply node.js

71
推荐指数
3
解决办法
4万
查看次数

为什么模块级别的return语句在Node.js中有效?

当我回答另一个问题时,我遇到了一个带有顶级return语句的Node.js模块.例如:

console.log("Trying to reach");
return;
console.log("dead code");
Run Code Online (Sandbox Code Playgroud)

没有任何错误和打印工作:

Trying to reach
Run Code Online (Sandbox Code Playgroud)

在标准输出但不是" dead code" - return实际停止执行.

但根据ECMAScript 5.1中return语句规范,

语义

如果ECMAScript程序包含不在a内的return语句,FunctionBody则认为它在语法上是不正确的.

在上面显示的程序中return不包含任何功能.

那为什么不扔?

javascript return syntax-error node.js node-modules

47
推荐指数
1
解决办法
4578
查看次数