javascript - js中的函数声明
怪我咯
怪我咯 2017-04-10 15:25:47
[JavaScript讨论组]
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就不能用,谁能解释下?

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(3)
PHPz

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

阿神

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

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

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

阿神

骚年在做nodejs开发啊。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号