触发之前发射比方说,我有以下的情况:VAR通过按钮
<a href="#" id="trigger">CLICK ME</a>
和
var x = alert("test");
$('#trigger').click(function() {
x
});
为什么x
射击加载页面,而不是同时按下按钮?我知道什么时候将变量放入它的函数中,但我真的不明白为什么!
触发之前发射比方说,我有以下的情况:VAR通过按钮
<a href="#" id="trigger">CLICK ME</a>
和
var x = alert("test");
$('#trigger').click(function() {
x
});
为什么x
射击加载页面,而不是同时按下按钮?我知道什么时候将变量放入它的函数中,但我真的不明白为什么!
var x = alert("test");
这将执行alert("test")
,那么该表达式的值分配给x
。 (alert
不返回任何东西,所以x
将被设置为undefined
)
相反,使用此代码:
var x = function() {
alert("test");
}
$('#trigger').click(function() {
x(); //remember to actually call it!
});
这里有一些更好的方法:
$('#trigger').click(x); //no need to wrap in function if it does not have
//any arguments
$('#trigger').on('click', x); //using on
在这一行
var x = alert("test");
你实际上调用函数pu将它的返回值写入变量x中。由于alert()
除undefined
之外没有任何返回值,因此x
中没有任何真值。
这就是为什么下一次你访问x
它仍然是空的,不是包含一个指向函数或类似的东西!
因为alert("test")
是一个会显示警告消息的函数。由于您不在$('#trigger')
区域调用此函数,因此与触发器的点击功能无关,但只要浏览器执行了脚本部分,就会立即执行此功能。
var x = alert("test");
将立即调用函数alert("test")
,然后将返回值分配给x
。
为了得到你想要的行为,你可以用调用一个函数提醒:
var x = function() {
alert("test");
}
再到后来调用它,使用括号(参数列表):
$('#trigger').click(function() {
x();
});
我建议你在MDN上[学习JavaScript](https://developer.mozilla.org/en-US/docs/JavaScript/A_re-introduction_to_JavaScript)来理解哪些功能。 – Ven
真的我不明白为什么有人会downvoting,如果这是一个正常的问题!我想我的js,jquery是好的,它只是我需要记住它! – supersize
你的JS不好。你不知道JS,你只想通过刚刚学习jQuery – Ven