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

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

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

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是一种dynamictypes的语言,但不知道人们如何在不知道types的情况下debugging或理解对方的代码。

那么JavaScript的好处是它的解释意味着你总是可以访问实际的源代码本身。 对于节点,您可以查看node_modules/blah来读取源代码,但绝大多数npm上的代码也是github上的开源代码,您也可以在那里阅读源代码。

在浏览器中,如果遇到缩小的代码,开发人员工具有一个自动格式button,但是在节点中,通常不需要这样做,因为代码是未发布的。

也就是说,有些事情被很好地logging下来,有时文档是错误的或过时的,有时阅读源代码既不快也不直接。 但是,如果某件事对您来说确实存在问题,而且既没有logging也难以阅读,您可以并且应该在npm上切换到其他内容,因为“没有人会为此付出时间”。

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