如何在Javascript中确定函数参数?

如何在Javascript中确定函数参数?,javascript,node.js,Javascript,Node.js,我是一名学习Javascript(Node.js)的Java开发人员 这是我尝试运行的第一段代码: var sys = require("sys"), my_http = require("http"); my_http.createServer(function(request,response){ response.writeHeader(200, {"Content-Type": "text/plain"}); response.write("Hello World");

我是一名学习Javascript(Node.js)的Java开发人员

这是我尝试运行的第一段代码:

var sys = require("sys"),
my_http = require("http");
my_http.createServer(function(request,response){
    response.writeHeader(200, {"Content-Type": "text/plain"});
    response.write("Hello World");
    response.end();
}).listen(8080);
若并没有文档,我怎么知道createServer采用了一个以请求和响应为参数的函数?我这样问是因为我想为即将开始面对的所有未记录代码做好准备。以下是createServer函数的源代码:

function createServer(options) {
    var bunyan = require('./bunyan_helper');
    var InternalError = require('./errors').InternalError;
    var Router = require('./router');
    var Server = require('./server');

    var opts = shallowCopy(options || {});
    var server;

    opts.name = opts.name || 'restify';
    opts.log = opts.log || bunyan.createLogger(opts.name);
    opts.router = opts.router || new Router(opts);

    server = new Server(opts);
    server.on('uncaughtException', function (req, res, route, e) {
        if (this.listeners('uncaughtException').length > 1 ||
            res._headerSent) {
            return (false);
        }

        res.send(new InternalError(e, e.message || 'unexpected error'));
        return (true);
    });

    return (server);
}

我知道Javascript是一种动态类型的语言,但我想知道人们如何在不知道类型的情况下调试或理解彼此的代码。

Javascript的好处在于它的解释意味着您始终可以访问实际的源代码本身。对于node,您可以查看
node_modules/blah
来读取源代码,但是npm上的绝大多数内容在github上也是开源的,您也可以在那里读取源代码

在浏览器中,如果遇到缩小的代码,开发人员工具会有一个自动格式化按钮,但在节点中,通常不需要自动格式化按钮,因为代码是未经统一发布的


也就是说,有些东西文档记录得很好,有时文档错误或过时,有时阅读源代码既不快速也不直接。但是,如果某些内容对您来说确实有问题,并且既没有文档记录又难以阅读,您可以也应该在npm上切换到其他内容,因为“没有人有时间这样做”。

在使用JavaScript时,您必须非常熟悉api。例如,document.getElementById(id)。代码中没有关于id的提示,但它是很容易理解的。

这就是文档、注释和显式变量名的用途。不幸的是,你是对的-选项对我来说并不是尖叫
函数。看起来你们需要看看路由器或服务器,看看它们是如何使用选项的。那里可能更清楚。此外,http是一个相当标准的节点模块。在线文档似乎没问题。小心你得到的代码。
sys
模块已经离开很长时间了。