请求帮助以了解Javascript变量范围

时间:2012-11-02 14:16:16

标签: php javascript html variables

恐怕很多人会发现我的问题非常微不足道,但我需要问一下。

(根据很多人的要求,我编辑了代码,以便您可以重现它。)

我在脚本标记中定义了一个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,显示“数据”为值。

有谁能告诉我发生了什么事?

2 个答案:

答案 0 :(得分:2)

alert ("alert2: "+ store_categories);立即运行。

$( init_filtering );是一个无用的(请参阅self-documenting code)快捷方式,可在DOM准备就绪时(即init_filtering解析后)运行</html>

答案 1 :(得分:1)

$(function() {...})执行等效于$.ready(),而您的内联脚本将在文档中解析后立即执行。

这意味着您指定的函数将延迟到页面加载。

空数组toString是一个空字符串,这就是您在第一个alert中看不到任何内容的原因。