首页 > js中的函数声明

js中的函数声明

var app = require("http").createServer(handler);
var io = require("socket.io")(app);
app.listen(8081);

function handler (req, res) {
    console.log("what??");
    res.writeHead(200);
    res.end("hello");
}
var app = require("http").createServer(handler);
var io = require("socket.io")(app);
app.listen(8081);

var handler = function (req, res) {
    console.log("what??");
    res.writeHead(200);
    res.end("hello");
}

第一段代码的handler就可以用,第二段代码的handler就不能用,谁能解释下?


建议楼主学习一下这个:

JavaScript秘密花园-函数声明与表达式


骚年在做nodejs开发啊。


第一种function handler()是函数声明语句, var handler = function(){} 是函数表达式赋值给变量handler。

在Javascript中函数声明语句会被提前到外部脚本或外部函数作用域的顶部,所以代码中可以在它定义之前对它进行调用。而第二种采用变量赋值的方法,变量赋值是不会提前到作用域顶部的,所以以表达式方式定义的函数无法在定义之前被调用。

更详细的解释在《Javascript权威指南第六版》8.1节函数定义中有讲。 网上这本书的电子版很多,可以搜一下。


你把var handler = function (req, res) {
console.log("what??");
res.writeHead(200);
res.end("hello");
}
放上面试试

【热门文章】
【热门文章】