1
(function() {

    var content = [
        {
            title: 'My awesome blog post',   
            thumbnail: 'images/bane.jpg',
        },
        {
            title: 'My second awesome blog post',
            thumbnail: 'images/joker.jpg',
        },
    ],
        template = $.trim( $('#blogTemplate').html() ),
        frag = '';

    $.each( content, function( index, obj ) {  
        frag +=
            template.replace( /{{title}}/ig, obj.title )
                    .replace( /{{thumbnail}}/ig, obj.thumbnail );       
    });

    $('body').append(frag);

})();

こんにちは、

自己呼び出し型の匿名関数に含まれるコード ブロックに、次のように var キーワードを前に付けた変数宣言を含めることができないのはなぜだろうかと思っていました。

    var template = $.trim( $('#blogTemplate').html() ),
    var frag = '';

この関数のローカル変数に var キーワードを追加するtemplatefrag、コードが壊れているように見えますが、その理由が本当にわかりませんが、以下に示すように、関数の外側のグローバル スコープで宣言するtemplateと、コードが機能します。frag

var template;
var frag;

これがスコープに関連しており、誰かが説明する時間があれば、それは大歓迎です。理想的には、読みやすくするために var キーワードを前templateに付けたいと思います。frag

4

3 に答える 3

3

コードを壊しているのは変数宣言の間のコンマであり、varキーワード自体の使用ではないと思います。これを試して:

var template = $.trim( $('#blogTemplate').html() ),
frag = '';

キーワードは、var指定した最初のスニペットのテンプレートとフラグメントにすでに適用されています。これは、ローカル変数宣言のコンマ区切りリストの2番目と3番目の項目であるためです。

function(){
    var x = 1, 
        y = 2, 
        z = 3;
    window.x; //undefined
    x; //1
    window.y;//undefined
    y; //2
}

これを行う最もクリーンな方法は、構文糖衣構文を完全に避け、各変数宣言を個別のステートメントに分割することです。

var content = [
    {
        title: 'My awesome blog post',   
        thumbnail: 'images/bane.jpg',
    },
    {
        title: 'My second awesome blog post',
        thumbnail: 'images/joker.jpg',
    }
];
var template = $.trim($('#blogTemplate').html());
var frag = '';
于 2012-11-22T14:24:56.690 に答える
0

プレフィックスを付ける必要はありませんvar:

var a, b, c;

すでに以下と同等です:

var a;
var b;
var c;
于 2012-11-22T14:27:16.593 に答える
0

それらはすでにローカルでありvar、それらの前にあります-すべての変数を宣言と定義の単一のリストにするコンマに注意してください。それらはいくつかの行に分割されているため、これに気付かないようです:

var content = [ /* multi-line array */ ], template = $.trim( $('#blogTemplate').html() ), frag = '';

当然、リスト内にさらに追加するのvarは悪い構文です。

于 2012-11-22T14:29:13.177 に答える