三元运算符的奇怪行为
strange behavior with ternary operator
我试图编写一个函数,将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
相关文章:
- JavaScript 中三元条件和逻辑和运算符的运算符优先级
- 三元运算符检查多个字符串
- 用javascript中的三元运算符连接字符串
- 使用AngularJs数据绑定的三元运算符显示图像
- 三元运算符是NaN
- AngularJS模板中的三元运算符
- Javascript 同构三元运算符无法正确解析
- 车把中有三元运算符吗.js
- 三元运算符未执行的虚假语句
- 根据三元运算符选择函数
- 用三元运算符整理javascript
- 堆叠三元运算符在 Angularjs 表达式中不起作用
- es6javascript推荐使用三元运算符应用模板文本的方法
- 具有逻辑运算符的复杂三元运算符
- 通过三元运算符的自赋值
- 三元运算符中的表达式作为函数
- JavaScript中看似多余的三元运算符
- js:三元运算符中的多重返回
- Javascript 三元运算符结果
- 使用三元运算符缩短代码