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 对象:

{"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 - 为什么我的变量不起作用,但定义却起作用?

logic - 用基本策略证明 not (iff a (not a))

java - 两个运算符之间的 AND 如何工作?

sql - 等式查询

javascript - 动态添加事件监听器

javascript - Google Cloud Pub/Sub 在消息吞吐量低时触发高延迟

java - 检查 5x6 矩阵中的相邻单元格

r - 将偏移量参数传递给 lm 函数

c# - 合并通用方法