JavaScript;我如何声明变量全局?
问题描述:
http://jsfiddle.net/borayeris/6kvyb/JavaScript;我如何声明变量全局?
<ul>
<li>foo</li>
<li>bar</li>
</ul>
<script>
$('li').each(function(index) {
var qq=$(this).text();
alert(index + ': ' + qq);
});
alert(qq);// Asking this one.
</script>
答
你声明的功能范围内的qq。一旦该函数退出,qq不再存在。
如果你想有一个qq的警报,你需要声明它的功能之外。请记住,它将只包含分配给它的最后一个值。
var qq;
$('li').each(function(index) {
qq=$(this).text();
alert(index + ': ' + qq);
});
alert(qq); // Will alert 'bar'
+0
我该怎么做才能执行此功能?在PHP中,我可以使用全局使用它的功能,但在JS我不知道。 – borayeris 2011-02-09 18:34:57
答
布兰登的答案在解释原因时是正确的。相反,如果你想知道你怎么能让它调用每()之后访问,你可能想是这样的:
var qq;
$('li').each(function(index) {
qq = $(this).text();
alert(index + ': ' + qq);
});
alert(qq);
这使得QQ全局范围的变量,你将重新分配每次通过循环的值。在循环结束时,变量将保留分配给它的最后一个值(在示例中为bar)。
答
应该改写这样的:
<script>
var qq;
$('li').each(function(index) {
qq=$(this).text();
alert(index + ': ' + qq);
});
alert(qq);
;
请注意,qq将只包含最后一个值,因为每次循环li时都会重新分配它。
由于您在匿名函数中声明了qq变量,因此它不工作,所以它不在其外部。
http://jsfiddle.net/6kvyb/4/ – Rafay 2011-02-09 18:37:18