弱弱的问一个js问题……

Just_War 2012-10-31 08:38:06
js中有这么一句:
a=!a?0:a;
虽然我知道这是个三目符,但是 a=!a的判断怎么回事儿啊?
...全文
169 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
打开链接下载源码: https://pan.quark.cn/s/052c24e81345 gamex 棋牌类游戏框架 技术基于node.js,写这个东西是因为最近接触了一部分棋牌的代码,过程实在是不那么让人愉快,代码规范性,可读性,稳定性,扩展性都不好。 于是想用一个能够快速开发的工具来实现一个自己的框架。 center_svr 目前只做监控和服务器间的列表维护 gate_svr 用户请求转发到服务器 login_svr 用户帐号及登录授权 hall_svr 游戏信息及游戏服务器信息 game_svr 游戏服务器 除了centersvr以外,其它的服务器都可以水平扩展,可以多台分布式布署。 centersvr是设计中的单点。 客户端与网关间应该只有一个连接,在开发阶段客户端可直连游戏服务器,不通过网关,降低调试复杂度。 对于多个同类服务器,使用随机访的方式进行负载均衡。 服务器间通信协议都使用json,因为简单,好调试,易扩展。 服务间通信是自己模拟的rpc通信,需要严格的稳定性的话,要使用专门的rpc组件来实现。 包括leader选举,广播等。 目前的实现方式的在于,服务宕机了,不能及时通知到所有的服务。 服务在调用时还需要自行判定被调者是否存活。 游戏服务器包含多个房间,每个房间参数可配置,每个房间里有一个桌子,每个桌子有玩家。 由于node.js的天性,它是io处理强,cpu计算弱的。 所以不要在游戏服务器中添加大量的计算类任务。 数据库使用SQL拼接的方式来写的。 练手,练手。 正确的做法是使用orm组件,避免大量重复的代码。 第三方游戏支付: 骏付通 爱贝 没想到这个项目有了这么多star……………………由于身体健康原因,项目停止了两年多了。
打开链接下载源码: https://pan.quark.cn/s/052c24e81345 gamex 棋牌类游戏框架 技术基于node.js,写这个东西是因为最近接触了一部分棋牌的代码,过程实在是不那么让人愉快,代码规范性,可读性,稳定性,扩展性都不好。 于是想用一个能够快速开发的工具来实现一个自己的框架。 center_svr 目前只做监控和服务器间的列表维护 gate_svr 用户请求转发到服务器 login_svr 用户帐号及登录授权 hall_svr 游戏信息及游戏服务器信息 game_svr 游戏服务器 除了centersvr以外,其它的服务器都可以水平扩展,可以多台分布式布署。 centersvr是设计中的单点。 客户端与网关间应该只有一个连接,在开发阶段客户端可直连游戏服务器,不通过网关,降低调试复杂度。 对于多个同类服务器,使用随机访的方式进行负载均衡。 服务器间通信协议都使用json,因为简单,好调试,易扩展。 服务间通信是自己模拟的rpc通信,需要严格的稳定性的话,要使用专门的rpc组件来实现。 包括leader选举,广播等。 目前的实现方式的在于,服务宕机了,不能及时通知到所有的服务。 服务在调用时还需要自行判定被调者是否存活。 游戏服务器包含多个房间,每个房间参数可配置,每个房间里有一个桌子,每个桌子有玩家。 由于node.js的天性,它是io处理强,cpu计算弱的。 所以不要在游戏服务器中添加大量的计算类任务。 数据库使用SQL拼接的方式来写的。 练手,练手。 正确的做法是使用orm组件,避免大量重复的代码。 第三方游戏支付: 骏付通 爱贝 没想到这个项目有了这么多star……………………由于身体健康原因,项目停止了两年多了。

87,992

社区成员

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

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