正在研究一些 js 代码性能并看到了这种方法:
window.sample = {
foo: function foo(a,b){
// code goes here
}
bar: function bar(a,b){
// code goes here
}
}
有什么理由让你在“function”这个词之后减速函数名?
它有助于调试吗?
它是好是坏还是只是不必要的?
正在研究一些 js 代码性能并看到了这种方法:
window.sample = {
foo: function foo(a,b){
// code goes here
}
bar: function bar(a,b){
// code goes here
}
}
有什么理由让你在“function”这个词之后减速函数名?
它有助于调试吗?
它是好是坏还是只是不必要的?
唯一的原因是您可以在函数内部使用函数本身,而无需引用对象:
foo: function foo(a,b){
return a > 0 ? a + foo(a-1,b) : b;
}
但是请注意,对命名函数文字的支持在浏览器中并不一致,因此您应该避免使用它。
他们没有为 foo 和 bar 属性分配匿名函数,而是分配了命名函数。
它对调试很有帮助:据我所知,唯一的区别是您将看到函数的名称显示在调用堆栈中,而不是“javascript匿名函数”
这是一个命名函数表达式。函数的名称只能作为函数本身的变量使用。这对于递归很有用,例如:
var obj = {
foo: function foo(node) {
// Do something to node
var childNode = node.firstChild;
while (childNode) {
foo(childNode);
childNode = childNode.nextSibling;
}
}
};
在大多数浏览器中,函数的名称也可以通过函数的非标准name
属性获得,这有助于在调试或检查堆栈跟踪时识别函数。
IE < 9 的实现有缺陷,因此在使用时需要小心。完整的细节可以在Juriy Zaytsev 关于这个主题的优秀文章中找到。