JSで関数を定義するときに、
1.
function hoge() { }
でやらずに、
2.
var hoge = function() { }
のように匿名関数を変数に代入する方法がある。
http://www.amazon.co.jp/gp/product/4774144665?ie=UTF8&camp=1207&creative=8411&creativeASIN=4774144665&linkCode=shr&tag=noctushinrsdi-22
の本による(僕は買ってないが・・。)と、
1の方法は、「function命令で定義する」と呼んで、
2の方法は、「関数リテラルで表現する」と呼べばいいのか?
参考URL: http://micomura.hatenablog.jp/entry/2012/02/03/145713
CoffeeScriptだと2の書き方になる。
・app.coffee
app = require('http').createServer(handler) io = require('socket.io').listen(app) fs = require('fs') app.listen(1337) handler = (req, res) -> fs.readFile(__dirname + '/index.html', (err, data) -> if err res.writeHead(500) res.end('Error') res.writeHead(200) res.write(data) res.end() )
と書けば、
var app, fs, handler, io; app = require('http').createServer(handler); io = require('socket.io').listen(app); fs = require('fs'); app.listen(1337); handler = function(req, res) { return fs.readFile(__dirname + '/index.html', function(err, data) { if (err) { res.writeHead(500); res.end('Error'); } res.writeHead(200); res.write(data); return res.end(); }); };
となり、
handler = function(req, res) {
の部分のせいで動かなかった。
function handler(req, res) {
とやれば動作するのだが?
だれか、これで動かない原因教えてください。