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

“variable++”在被评估后递增,“++variable”在被评估之前递增。“--”运算符也是如此。

参考http://msdn.microsoft.com/en-us/library/ie/26k41698(v=vs.94).aspx

于 2013-10-20T19:29:40.917 回答