0

javascript オブジェクトを http 互換の文字列に変換する関数をプログラムしようとしました。意図したことは達成しましたが、なぜ機能するのかわかりません。私の最終的な機能は次のとおりです。

function paramify (p) {
    var n = 0, r = "";
    for (var i in p) {
        r+=(n++==0?"":"&")+i+"="+p[i];
    }
    return r;
}

三項演算子のないバージョンは次のとおりです。

function paramify (p) {
    var n=0, r="";
    for(var i in p){
        if(n++!=0){
            r+="&"
        }
        r+=i+"="+p[i]
    }
    return r;
}

json オブジェクトの例:

{"authToken":"aqsd2","username":"test","password":"1234"}

となります:

authToken=aqsd2&username=test&password=1234

(意図として)

なぜこれが機能するのか、誰かが私に説明してもらえますか? n がすでに 0 のときに n++ が 0 になるとは思っていませんでした。

4

2 に答える 2

3

これは、プリインクリメントとポストインクリメントの違いです。この質問で説明されています: ++someVariable Vs. Javascript の someVariable++

于 2013-10-20T19:26:38.003 に答える
3

「変数++」は評価後にインクリメントされ、「++変数」は評価前にインクリメントされます。「--」演算子についても同様です。

http://msdn.microsoft.com/en-us/library/ie/26k41698(v=vs.94).aspxを参照してください。

于 2013-10-20T19:29:40.917 に答える