0

多くの人が私の質問を非常に些細なことだと思うのではないかと心配していますが、私はそれを尋ねる必要があります.

(多くの方からご要望がありましたので、再現できるようにコードを編集しました。)

以下に示すように、script タグ内で定義された 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>

ページが読み込まれると、最初にアラート 2 が空白の値で表示され、次にアラート 1 が表示され、値として「データ」が表示されます。

誰が何が起こっているのか教えてもらえますか?

4

2 に答える 2

2

alert ("alert2: "+ store_categories);すぐに実行されます。

$( init_filtering );DOMの準備ができたとき(つまり、解析した後)に実行するのに役に立たない(自己文書化コードを参照)ショートカットです。init_filtering</html>

于 2012-11-02T16:25:09.390 に答える
1

$(function() {...})と同等に$.ready() 実行されますが、インラインスクリプトは、ドキュメントで解析されるとすぐに実行されます。

これは、指定した関数がページが読み込まれるまで延期されることを意味します。

空の配列toStringは空の文字列であるため、最初のに何も表示されませんalert

于 2012-11-02T16:25:30.943 に答える