相关疑难解决方法(0)

在JavaScript事件代码中使用匿名函数而不是命名函数进行回调和参数有什么好处?

我是JavaScript的新手.我理解这个语言的许多概念,我一直在阅读原型继承模型,而且我正在用越来越多的交互式前端东西吹口哨.这是一种有趣的语言,但我总是被回调意大利面关闭,这是很多非平凡互动模型的典型特征.

对我来说一直以来都很奇怪的是,尽管可读性噩梦是JavaScript嵌套回调的嵌套,但在很多示例和教程中我很少看到的一件事是使用预定义的命名函数作为回调参数.白天我是一名Java程序员,并且放弃了关于企业名称的陈规定型单元代码单元我喜欢用一种具有强大功能的IDE选择的语言来享受的是使用有意义的,如果长,名称可以使代码的意图和含义更加清晰,而不会使实际生产变得更加困难.那么为什么不在编写JavaScript代码时使用相同的方法呢?

考虑到这一点,我可以提出支持和反对这一观点的论据,但我对该语言的天真和新颖性使我无法得出任何结论,为什么这在技术层面上是好的.

优点:

  • 灵活性.具有回调参数的异步函数可以通过许多不同的代码路径之一到达,并且可能不得不编写命名函数来考虑每个可能的边缘情况.
  • 速度.它对黑客心态起着重要作用.把东西固定在它上面直到它起作用.
  • 其他人都在这样做
  • 较小的文件大小,即使非常简单,但每一点都在网络上.
  • 更简单的AST?我假设匿名函数是在运行时生成的,因此JIT不会将名称映射到指令,但我只是在猜测.
  • 更快的调度?也不确定这个.再猜一次.

缺点:

  • 这是可怕的,不可读的
  • 当你在一系列回调中深深嵌套时,它会增加混乱(公平地说,这可能意味着你开始编写构造不良的代码,但这很常见).
  • 对于没有功能背景的人来说,这可能是一个奇怪的概念

有这么多现代浏览器显示出比以前更快地执行JavaScript代码的能力,我没有看到使用匿名回调可能获得的任何微不足道的性能获得是必要的.看来,如果您处于使用命名函数是可行的情况(可预测的行为和执行路径),那么就没有理由不这样做.

那么有什么技术原因或陷阱我不知道这使得这种做法如此普遍吗?

javascript coding-style callback anonymous-function code-readability

44
推荐指数
3
解决办法
3万
查看次数

jquery匿名函数声明的含义

以下假设是否准确?

1)立即执行

(function(){
})();
Run Code Online (Sandbox Code Playgroud)

2)执行文件就绪

$(document).ready(function(){
});
Run Code Online (Sandbox Code Playgroud)

3)准备好文件的简写

$(function(){
});
Run Code Online (Sandbox Code Playgroud)

4)准备文件的替代速记,以避免交叉脚本冲突

(function($) {
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

javascript jquery

23
推荐指数
2
解决办法
1万
查看次数

事件处理程序绑定到匿名函数vs命名函数

我知道.on()存在jQuery,.bind()不应该在将来使用,考虑到我有一个大于或等于1.7的jQuery版本.

我想知道的是:将匿名函数或命名函数附加到使用的事件处理程序之间是否有任何区别.bind()

例:

// Anonymous function
$(".warning").bind("click", function(){
   alert("Hello");
});

// Named function
$(".warning").bind("click", foo);

function foo(){
   alert("Hello");
}
Run Code Online (Sandbox Code Playgroud)

想象一下,我的页面中有100个div班级warning.该函数.bind()将使用匿名函数将新函数附加到每个处理程序,但它与JavaScript和jQuery内部的命名函数完全相同吗?

谢谢.

javascript jquery event-handling

10
推荐指数
1
解决办法
1523
查看次数