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

Javascript 为什么'foo()'在这里工作?,javascript,jquery,Javascript,Jquery,这是一把小提琴: 当设置为未定义函数的参数时,为什么会调用foo() function foo(){ alert('huh??'); } jQuery('#container').on('change', 'input', function(e){ console.log('change'); }).blahblah(foo()); 因为你在叫它foo()。您可以像在.blahblah(foo)中那样传递函数而不调用它们在尝试查找未定义函数之前调用该函数 以这样的表

这是一把小提琴:

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

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

因为你在叫它<代码>foo()。您可以像在
.blahblah(foo)中那样传递函数而不调用它们

在尝试查找未定义函数之前调用该函数

以这样的表情

  objectReference.propertyName( arg1, arg2, arg3 )
该语言的规范规定,在进行任何测试以确定函数引用是否实际有效之前,先对参数进行评估。因此,将对参数列表中对
foo()
的调用进行求值,并且只有在其值已知后,才进行任何测试,以查看属性引用是否指向实函数


第3步是对参数的求值,第4步是测试代码所说的作为函数调用的东西是否实际上是函数。

首先,您需要在某个地方定义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'.

代码应该发布在这里。为什么它不能“工作”?它正在执行所请求的操作。
foo()
在js引擎抛出与不存在的function.Derp关联的错误之前被调用。我需要一个假期。我想op是想知道为什么它会提醒“嗯?”,即使blahblah函数不存在。类似于
why
会在以下代码中发出警报:
窗口。YesIknowthis不会发出警报(函数(){alert('why');}())