首页 新闻 会员 周边

JavaScript的这两种写法有什么不同?

0
悬赏园豆:10 [已解决问题] 解决于 2012-04-16 16:06

写法一:

var remember=document.getElementById("rememberPosition").checked;
remember = remember ? remember: false;

写法二:

var remember=document.getElementById("rememberPosition").checked;
remember = !remember ? false : remember;

请问这两种写法有什么不同,哪个更优

草根程序猿的主页 草根程序猿 | 初学一级 | 园豆:129
提问于:2012-03-26 22:06
< >
分享
最佳答案
0

在我看来是下面的更优, 因为bool值的比较要比字符串的比较更加省,更优

收获园豆:10
韦锦业 | 初学一级 |园豆:157 | 2012-03-26 22:10

上一个是字符串比较,下一个是bool值比较

韦锦业 | 园豆:157 (初学一级) | 2012-03-26 22:11

什么意思啊,能不能说的详细一点

草根程序猿 | 园豆:129 (初学一级) | 2012-03-26 22:11

@菜鸟程序猿: 

remember = remember ? remember: false;           中 ? : 这个三元运算符你应该懂吧, remembr?remember:false这里执行的是字符串的比较, 字符串的比较是: 比如abc 和abd比较,先是比较第一个a,相同了再比较下一个,否则就返回false ,不然就积雪继续比较下去,但
remember = !remember ? false : remember;这个是先将remember转为bool值,再进行比较,一步到位了(bool比较只有0和1比较)
韦锦业 | 园豆:157 (初学一级) | 2012-03-26 22:18

@韦锦业: 谢谢你的解释,你说的我基本也知道,对于这个语句:

 remember = remember ? remember: false;

比较的也是bool值吧,就是看 remember 是否为真啊

草根程序猿 | 园豆:129 (初学一级) | 2012-03-27 07:17

@菜鸟程序猿: 仔细看,好像也是呢

韦锦业 | 园豆:157 (初学一级) | 2012-03-27 08:22
其他回答(3)
0

我觉得上面更优,没有任何数据说明,就算有,估计也可以忽略不计。

从阅读的方向看,肯定的语句,会被否定的语句更加容易阅读。

沉默的糕点 | 园豆:1786 (小虾三级) | 2012-03-27 11:41
0

有什么意思?

小小刀 | 园豆:1991 (小虾三级) | 2012-03-27 22:22
1

都差不多,我一般会写上面的写法。

深蓝色梦想 | 园豆:6 (初学一级) | 2012-03-28 09:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册