弱弱的问一个js问题……

Just_War 2012-10-31 08:38:06
js中有这么一句:
a=!a?0:a;
虽然我知道这是个三目符,但是 a=!a的判断怎么回事儿啊?
...全文
170 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Just_War 2012-10-31
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
可能是为了特殊判断吧,比如说a值是0、未定义、null的时候就让a等于0,否则就等于原来的值
[/Quote]
嗯。谢啦!!!
  • 打赏
  • 举报
回复
!a返回true or false
如当a = 1
则!a被转化成布尔值,是false
当a = 0
则!a被转化成布尔值,是true
所以假如定义了a = 1
则a = 1
所以假如定义了a = 0
则a = 0
所以假如定义了a = null
则a = 0
lilo4033 2012-10-31
  • 打赏
  • 举报
回复
可能是为了特殊判断吧,比如说a值是0、未定义、null的时候就让a等于0,否则就等于原来的值
Just_War 2012-10-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
JScript code


var a=false;
a=!a?0:a;//==>a=(!a)?0:a;或者a=(!a?0:a)
alert(a);


如果a为真值,则赋a值为a本身,否则赋a值为0;=号为赋值,不是比较。
[/Quote]

嗯,对。明白了。现在的问题是这一句出现在上下文中,给你看看:
function _CalcSrvFee(record){
var sfr = record.getValue("SERVICE_FEE_RATE");
var q = record.getValue("QUANTITY");
var aq = record.getValue("APPROVE_QUANTITY");
var f = record.getValue("FEEAMOUNT");
var m = record.getValue("MAX_VALUE");
var r1 = 0;
var r2 = 0;
sfr = !sfr?0:sfr;
q = !q?0:q;
aq = !aq?0:aq;
f = !f?0:f;
m = !m?0:m;
r1 = q*f*sfr>m*sfr?m*sfr:q*f*sfr;
r2 = aq*f*sfr>m*sfr?m*sfr:aq*f*sfr;
record.setValue("FEE_AMOUNT",r1);
record.setValue("APPROVE_FEE_AMOUNT",r2);
return true;
}
是不是为了把它转化成数字,怕出错才这样处理的呢?
001007009 2012-10-31
  • 打赏
  • 举报
回复

alert( !0 )
alert( !1 )
//a=!a?0:a;
if( !a ){ // a值相反的boolean值
a = 0;
}else{
a = a;
}
__phoenix 2012-10-31
  • 打赏
  • 举报
回复
是不是取反呢。。
likeajin 2012-10-31
  • 打赏
  • 举报
回复

var a=false;
a=!a?0:a;//==>a=(!a)?0:a;或者a=(!a?0:a)
alert(a);

如果a为真值,则赋a值为a本身,否则赋a值为0;=号为赋值,不是比较。
Just_War 2012-10-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
a=!a 比较
如果相等 结果是0
否则 就是a
[/Quote]
a和!a怎么比较?我不明白的地方在这里。
南瓜三三 2012-10-31
  • 打赏
  • 举报
回复
a=!a 比较
如果相等 结果是0
否则 就是a

87,991

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧