js中有这么一句:
a=!a?0:a;
虽然我知道这是个三目符,但是 a=!a的判断怎么回事儿啊?
a=!a?0:a;
虽然我知道这是个三目符,但是 a=!a的判断怎么回事儿啊?
解决方案 »
- 解释一下啥叫预解析(自己起的名),希望给一些初学js的提供些帮助,如不对,请指正,别误导大家
- 帮我看看这段js如何关闭遮罩层
- MSComm32.ocx在IE加载正常,但JS访问运行无效?
- 以下数据属于什么格式的数据,可以用什么办法进行解码阅读?
- dom/js报错,提示缺少对象。
- 可以运行的代码放到另一个函数里就不能运行了。
- 何在javascript中运用正则表达式
- 滑过效果 求组
- javascript怎么实现读取文件的当前路径呢?(在线等!谢谢!)
- 好像有个js程序,可以自动知道更新时间的!有谁知道?
- jquery 如何获取div在可视范围内离顶部的距离
- javascript操作css left属性的问题
如果相等 结果是0
否则 就是a
var a=false;
a=!a?0:a;//==>a=(!a)?0:a;或者a=(!a?0:a)
alert(a);如果a为真值,则赋a值为a本身,否则赋a值为0;=号为赋值,不是比较。
alert( !0 )
alert( !1 )
//a=!a?0:a;
if( !a ){ // a值相反的boolean值
a = 0;
}else{
a = a;
}
嗯,对。明白了。现在的问题是这一句出现在上下文中,给你看看:
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;
}
是不是为了把它转化成数字,怕出错才这样处理的呢?
如当a = 1
则!a被转化成布尔值,是false
当a = 0
则!a被转化成布尔值,是true
所以假如定义了a = 1
则a = 1
所以假如定义了a = 0
则a = 0
所以假如定义了a = null
则a = 0