javascript - 三元运算符的奇怪行为

标签 javascript logic expression operator-keyword ternary

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

关于javascript - 三元运算符的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19481728/

相关文章:

javascript - JavaScript将函数返回到函数定义

javascript - AngularJs - 在工厂内的多个功能之间共享数据

javascript - 是否可以调用变量的先前增量?

xpath - 如何缩短此xpath表达式?

javascript - Javascript正则表达式以匹配数字零或大于零的任何整数

java - 如何使用正则表达式从字符串中获取数字?

javascript - 成千上万的对象会损害性能吗

javascript - 使用url编码转换特殊字符(é è ë)

php - 将数据从 int 传输到 string

java - 将某点(x,y)裁剪为600x600