oll*_*lli 3 javascript function function-calls
我的问题最容易解释为代码块和它下面的问题.
但这是试图用英语解释我的问题:
我正在学习JavaScript(而且我很懒,所以我使用了很多jQuery ...;))我遇到了一些我不太了解的东西,我不知道它叫什么,所以我不喜欢我知道应该研究什么术语.
基本上我想知道何时需要使用function(){ ... }(没有名称)以及何时使用function function_name(){ ... }(带有名称),以及如何使用.click() .post()或等执行函数setTimeout().
我知道一些jQuery函数,比如.click()需要你输入一个函数来调用.但问题是,你不能只说.click( function_name() )(如果我正确地解释了我的测试结果,这将在执行脚本时立即调用该函数)而不是你必须做.click( function(){ ... })或你可以做.click( function function_name(){ ... }).我还发现.click( function_name )只要事先定义就可以说,var function_name = function function_name(){ ... }而函数名是可选的,无论是否添加它都可以.
我举了一个例子,说明了我能想到的所有可能情况.我确实找到了什么工作,什么不工作,现在我想找出为什么每个人都在工作而其他人没有工作.
我希望理解这将有助于我更好地理解异步函数,如.post()或setTimeout().
<button id="one">Button 1</button>
<button id="two">Button 2</button>
<button id="three">Button 3</button>
<button id="four">Button 4</button>
<button id="five">Button 5</button>
<button id="six">Button 6</button>
<button id="seven">Button 7</button>
<button id="eight">Button 8</button>
<button id="nine">Button 9</button>
<script type="text/javascript">
function alert_three(){
alert('three');
}
var alert_four = function(){
alert('four');
}
function alert_five(){
alert('five');
}
var alert_five = alert_five();
//this will alert five right away, because we call to the function alert five, which does not return anything but creates an alert box.
var alert_six = function alert_six(){
alert('six');
}
$('#one').click( function(){
alert('one');
});
//this will work correctly.
$('#two').click( alert('two') );
//this will alert two right away, because...?
//it wont do anything else on click
$('#three').click( alert_three() );
//this will alert three right away, because...?
//it wont do anything else on click
$('#four').click( alert_four );
//this will work correctly.
$('#five').click( alert_five );
//this wont do anything else on click
$('#six').click( alert_six );
//this will work correctly.
$('#seven').click( function alert_seven(){
alert('seven');
});
//this will work correctly.
function alert_eight(){
return function(){
alert('eight');
}
}
$('#eight').click( alert_eight() );
//this will work correctly
function alert_nine(){
alert('nine');
}
$('#nine').click( alert_nine );
//this will not work
</script>
Run Code Online (Sandbox Code Playgroud)
同样的小提琴:http: //jsfiddle.net/ZfnaM/5/
基本上我想知道何时需要使用
function(){ ... }(没有名称)以及何时使用功能function_name(){ ... }(带名称)
从来没有必要使用它们.使用其中一种或另一种有时更方便.
以及如何使用.click().post()或setTimeout()等函数执行函数.
如果您正在使用接受回调的函数,那么您只需将要用作回调的函数传递给任何其他变量或文字.
如果你想编写一个使用回调的函数,那么它基本上归结为:
function accepts_callback(callback) {
callback();
}
function a_callback() {
alert("This is a callback");
}
accepts_callback(a_callback);
Run Code Online (Sandbox Code Playgroud)
你不能只说
.click( function_name() )
放置()一个函数后会调用它.不要包括它们,因为你可以通过它.
为什么这个脚本会提前五个警告,
你做的第一件事,然后声明函数,是进行函数调用: var alert_five = alert_five();
然后两个
$('#two').click( alert('two') );//this will alert two right away, because...?
你在alert这里打电话
//它在点击时不会做任何其他事情
返回值alert将永远是undefined,这不是一个函数
启动时有三个?
$('#three').click( alert_three() );//这会马上警告三个,因为......?
您正在alert_three立即调用该函数.
//它在点击时不会做任何其他事情
alert_three没有return语句,所以它返回undefined,这不是一个函数
为什么只有按钮1,4,6和7才能正常工作?
这是你给函数作为参数的唯一的click().
| 归档时间: |
|
| 查看次数: |
4439 次 |
| 最近记录: |