三元运算符的奇怪行为

strange behavior with ternary operator

本文关键字:运算符 三元      更新时间:2023-09-26

我试图编写一个函数,将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-object:

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

将成为:

authToken=aqsd2&username=test&password=1234

(如预期)

有人可以解释一下,为什么会这样?我没想到当 n 已经是 0 时 n++ 会变成 0。

这是前增量和后增量之间的区别。这个问题解释了:++someVariable vs. someVariable++ in Javascript

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

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