imj*_*mjp 41 javascript node.js
我目前正在学习JavaScript,我不太明白何时将函数写入变量.
例如,以下两个代码块在Node.js中执行完全相同的操作:
var onReq = function(req, res) {
res.write('Hello');
};
http.createServer(onReq).listen(3000);
Run Code Online (Sandbox Code Playgroud)
和
function onReq(req, res) {
res.write('Hello');
}
http.createServer(onReq).listen(3000);
Run Code Online (Sandbox Code Playgroud)
根据最佳实践,哪种方法最好?为什么?
Bra*_*tie 22
通常我只会var funcName = function(){}在以后需要重新定义该函数的动作时使用.例如:
var foo = function(a){ return a * 2; }
var bar = foo(2);
foo = function(a){ return a / 2; }
bar = foo(bar);
Run Code Online (Sandbox Code Playgroud)
否则,对于大多数目的(假设它不是回调或修饰符),通常可接受声明"经典"的函数.
Sup*_*upr 12
我默认使用非变量function onReq(){}版本.这不是我做出的一个有说服力的决定,但是考虑它会带来这些论点:
onReq将始终引用该函数体 - 在阅读代码时要少考虑一件事.有点像final在Java中标记变量.我发现没有人提到(直接和实际地 - 这似乎是这个问题的目的)我个人认为在变量中存储函数最有用的原因。这个原因是处理一个复杂的逻辑,需要很多选择(例如if)来确定应该调用不同函数的进一步行动方案,也可能使用不同的输入集。当进一步的操作仅在逻辑末尾的一个地方启动时,它会使代码更清晰。
function fooA (input) {...};
function fooB (input) {...};
let chosenHandler;
let chosenInput;
// Here we establish which function is relevant
if (someCondition) chosenHandler = fooA;
else chosenHandler = fooB;
// Here we establish which parameter should be used
if (someOtherCondition) chosenInput = 'First input';
else chosenInput = 'Second input';
// Call chosen function with chosen parameters - one place, nice and clean
chosenHandler(chosenInput);
Run Code Online (Sandbox Code Playgroud)
如果我们尝试直接调用函数,代码会变得更加混乱,而且逻辑越复杂,代码就越混乱。
| 归档时间: |
|
| 查看次数: |
38232 次 |
| 最近记录: |