关于js的匿名函数的有关问题
关于js的匿名函数的问题
function test()
{
alert("ha ha ,ni mei !");
return function () { alert(" you shi ni mei a "); };
}
window.onload = function ()
{
document.getElementById("btn").onclick = test();
}
此时当页面加载的时候页面会弹出"ha ha ,ni mei !";
但是当
window.onload = function ()
{
document.getElementById("btn").onclick =function()
{
alert("ha ha ,ni mei !");
return function () { alert(" you shi ni mei a "); };
} ;
}
这样就不会在页面加载的时候弹出"ha ha ,ni mei !";
为什么?
------解决方案--------------------
function test()
{
alert("ha ha ,ni mei !");
return function () { alert(" you shi ni mei a "); };
}
window.onload = function ()
{
document.getElementById("btn").onclick = test();
}
此时当页面加载的时候页面会弹出"ha ha ,ni mei !";
上面这个页面加载时就执行test(),所以会弹出。。
window.onload = function ()
{
document.getElementById("btn").onclick =function()
{
alert("ha ha ,ni mei !");
return function () { alert(" you shi ni mei a "); };
} ;
}
这个页面加载时会给id为btn的元素(比如button)绑定点击事件,只有在点击btn时才会弹出ha ha ,ni mei !
------解决方案--------------------
=test();
这个得到的是test函数的返回值
=function(){}
这儿得到的是一个函数引用
你可以写=test,但不应该写=test()
建议补基础,不只是js的,函数()表示执行函数并获得返回值,这算各语言的通用规则了
function test()
{
alert("ha ha ,ni mei !");
return function () { alert(" you shi ni mei a "); };
}
window.onload = function ()
{
document.getElementById("btn").onclick = test();
}
此时当页面加载的时候页面会弹出"ha ha ,ni mei !";
但是当
window.onload = function ()
{
document.getElementById("btn").onclick =function()
{
alert("ha ha ,ni mei !");
return function () { alert(" you shi ni mei a "); };
} ;
}
这样就不会在页面加载的时候弹出"ha ha ,ni mei !";
为什么?
------解决方案--------------------
function test()
{
alert("ha ha ,ni mei !");
return function () { alert(" you shi ni mei a "); };
}
window.onload = function ()
{
document.getElementById("btn").onclick = test();
}
此时当页面加载的时候页面会弹出"ha ha ,ni mei !";
上面这个页面加载时就执行test(),所以会弹出。。
window.onload = function ()
{
document.getElementById("btn").onclick =function()
{
alert("ha ha ,ni mei !");
return function () { alert(" you shi ni mei a "); };
} ;
}
这个页面加载时会给id为btn的元素(比如button)绑定点击事件,只有在点击btn时才会弹出ha ha ,ni mei !
------解决方案--------------------
=test();
这个得到的是test函数的返回值
=function(){}
这儿得到的是一个函数引用
你可以写=test,但不应该写=test()
建议补基础,不只是js的,函数()表示执行函数并获得返回值,这算各语言的通用规则了