恐怕很多人会发现我的问题非常微不足道,但我需要问一下。
(根据很多人的要求,我编辑了代码,以便您可以重现它。)
我在脚本标记中定义了一个JavaScript全局变量,如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<!--JQUERY-->
<script type="text/javascript" src="js_test/jquery-1.8.2.min.js" ></script>
<script type="text/javascript">
var store_categories = [];
function init_filtering() {
store_categories.push('data');
alert ("alert1: "+ store_categories);
}
</script>
<script type="text/javascript">$( init_filtering );</script>
</head>
<body>
<script type="text/javascript">
alert ("alert2: "+ store_categories);
</script>
</body>
</html>
加载页面后,alert2首先显示空白值,然后出现alert1,显示“数据”为值。
有谁能告诉我发生了什么事?
答案 0 :(得分:2)
alert ("alert2: "+ store_categories);
立即运行。
$( init_filtering );
是一个无用的(请参阅self-documenting code)快捷方式,可在DOM准备就绪时(即init_filtering
解析后)运行</html>
。
答案 1 :(得分:1)
$(function() {...})
执行等效于$.ready()
,而您的内联脚本将在文档中解析后立即执行。
这意味着您指定的函数将延迟到页面加载。
空数组toString是一个空字符串,这就是您在第一个alert
中看不到任何内容的原因。