繁体   English   中英

为什么`foo()`在这里工作?

Why does `foo()` work here?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

这是一个小提琴:

https://jsfiddle.net/5k10h27j/

为什么在设置为未定义函数的参数时会调用foo()

function foo(){
    alert('huh??');   
}
jQuery('#container').on('change', 'input', function(e){
    console.log('change');  
}).blahblah(foo());
3 个回复

在尝试定位未定义的函数之前调用该函数。

在表达式中

  objectReference.propertyName( arg1, arg2, arg3 )

该语言的规范规定在进行任何测试之前评估参数,以确定函数引用是否实际有效。 因此,您对参数列表中的foo()的调用将被计算,并且只有在其值已知之后才会进行任何测试以查看属性引用是否属于实函数。

这是规范的相关部分。 第3步是对参数的评估,第4步是测试,看看代码所说的作为函数调用的东西是否实际上是一个函数。

因为你在叫它。 foo() 您可以在不调用函数的情况下传递函数,如.blahblah(foo);

首先,你需要在某处定义你的blahblah函数,它必须原型jQuery才能用于链接。 一旦使用回调参数定义了函数,就可以通过传递foo引用而不是函数调用来调用它。

$.fn.blahblah = function ( callback ) {
  callback();
  return this; // if you want to keep chaining
};

function foo () {
  alert( 'huh??' );
}

$( '#container' )
  .on( 'change', function () {
    console.log( 'change' );
  })
  .blahblah( foo );
  // in this case you can keep chaining since blahblah is returning 'this'.
2 为什么没有测试。在这里没有工作?

我刚刚学习了'this'关键字,并试图更好地理解它,因此我写了这段代码,给人的印象是: 10 15 我的理解是,主要调用method1和method2方法,而方法又分别调用printMyNo方法。 如果我在printMyNo方法中打印this.no,它将打印调用该方 ...

2016-06-02 09:21:46 4 46   java
4 返回如何在这里工作?

新问题:但是为什么表达式来自 n == number,来自 firstFactorPtr == factor1 ? 有人可以解释一下,这是如何工作的: 返回 ( 因子 == 1 ); 这将返回到带有 "factor == 1 " 的 "main" ,为什么 "isPrime" 返回 tr ...

5 NSrange在这里如何工作?

我观看了有关ios7编程的视频,并在下面看到了一段代码。 我真的不明白变量范围是如何工作的。 我们创建一个NSrange变量范围,并且从不给它一个值,所以我认为&range指针应该返回nil。 那么如何在有效范围中使用它?range.location和range.length中 ...

6 strsep在这里工作如何? 为什么?

我正在尝试学习用C语言编写服务器的过程,并遇到了使我真正困惑的事情。 我一直在尝试理解一些代码(不是我的)。 我了解其中的大部分内容...除了此parse功能中的这一关键元素之外。 具体来说, strsep()在下面的代码中如何工作? 我以为strsep()找到了一个点(令牌?) ...

7 为什么CreateRemoteThread在这里工作?

我正在尝试将线程注入另一个进程,该进程允许该进程加载外部dll。 这是我在互联网上找到的代码,它可以正常工作。 但是据我了解, GetProcAddress返回的地址位于当前进程的内存空间中,而不是目标地址中。 那为什么行得通呢? 在Windows 7上测试 ...

8 递归在这里如何工作?

这是主文件: 这是BTFunction类: 我理解前3次插入(即根,右和左),但是当插入新值(即7)时,该函数如何工作。 据我介绍,当实现insert(7)时,它应该只搜索现在都不为null的root.next和root.right。 因此,它不应该做任何事情。 您能否 ...

9 ToList()在这里如何工作?

这可能相当琐碎,但我有时无法理解。 我需要从集合中删除一些项目。 我有从数据库填充的模型列表。 我从该列表中进一步提取了不同的集合,然后尝试删除了一些项目,但它以我认为的方式无法正常工作 由于cd的值为2,因此应从_doc中删除2个项目。 但是_doc仍有9个项目。 但是后 ...

2016-11-26 10:05:57 2 95   c#/ linq
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM