vue 三元表达式式为什么效率更高

其他回答(1)
m=a=="0"?"紅色":(a=="1"?&藍色&:&白色&)
收获园豆:2
园豆:3740
清除回答草稿
&&&您需要以后才能回答,未注册用户请先。他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)\ 经验分享
三元表达式替换冗余过多的if并实现几小时前,几分钟前
最近发现三元表达式超级好用,以前我们用的最多可能就是:
const apple = isApple ? buyApple : ''
这种代码,但是其实我们可以用更加简便的方式实现
const apple = isApple && buyApple 如果isApple为true则执行buyApple。
而我们常用的
const options = options || default 则是options为true则后面的default不再执行。
好了懂得上面的原理,我们来实现一个例子:评论很多时候有个日期,但是很多都不是显示实际日期,而是显示1天前,1分钟前,1小时前之类的,我们运用上面的三元表达式来实现:
const getTimeString = timeNum =& {
const timeString = timeNum instanceof Date ? timeNum : new Date(timeNum)
const second = 1000
const minute = 1000 * 60
const hour = minute * 60
const day = hour * 24
const time_now =
new Date().getTime()
const time_difference = time_now - timeString
const that_time = timeString.getFullYear() + '-'
+ parseInt(timeString.getMonth()+1) + '-'
+ timeString.getDate()+ ' '
+ timeString.getHours() + ':'
+ (timeString.getMinutes()&10 ?
'0'+timeString.getMinutes() :
timeString.getMinutes())
return Math.floor((time_difference/day) && that_time) || (Math.floor(time_difference/hour) && Math.floor(time_difference/hour)+'小时前') || (Math.floor(time_difference/minute) && Math.floor(time_difference/minute)+'分前') || (Math.floor(time_difference/second) && Math.floor(time_difference/second)+'秒前')
调用方法也很简单:
getTimeString(new Date(' 15:23:10'))
getTimeString(' 15:23:10')
上面运用了es6的语法,不熟悉的,可以看看es6的教程
因为事先不知道传过来是否是日期对象,所以我们需要判断一下
const timeString = timeNum instanceof Date || new Date(timeNum)
如果评论过了1天,按照天,周,月来看时间,我觉得比较累,所以大于24小时的,都用回原来的时间,我觉得这样可以增加用户体验。
如果你有更加简便的代码,欢迎留言。
若觉得本文不错,就分享一下吧!
请登录后,发表评论
评论加载中...
Copyright (C) 2018 imooc.com All Rights Reserved | 京ICP备 号-2C++的三目运算符效率如何_百度知道
C++的三目运算符效率如何
听说还不如用if,else,是吗
我有更好的答案
  效率:  如果说在可读性、效率上都比不上if/else,那咱还要它干嘛!而且跟踪调试上来说,一定就比if/else差。这些暂且都不说,看看下面这段代码:#include &stdio.h&intmain(){ int a = 1, b = 2, if(a & b)
c = c = a & b ? a : return 0;}用g++得到其对应的汇编代码: movl $1,-4(%ebp) ;a movl $2,-8(%ebp) ;b movl -4(%ebp),%if/else开始 cmpl -8(%ebp),%eax jge L2 movl -4(%ebp),%eax movl %eax,-12(%ebp) jmp L3L2: movl -8(%ebp),%eax movl %eax,-12(%ebp) ;if/else结束L3: movl -8(%ebp),% ?:开始 cmpl -4(%ebp),%eax jle L4 movl -4(%ebp),%eaxL4: movl %eax,-12(%ebp) ; ?:结束算起来,if/else用了8条指令,?:用了5条,这个差距大家并不觉得大吗?如果这是在一个循环里面呢?  三目运算符是?:结构的运算所谓三目就是需要三个变量进行运算的操作。它等价于短if-else操作。举个简单的例子:c=a&b?a:b这可分成几个部分,用括号分开:(a=)(2&1)?(3):(4)最左边是赋值操作第二个部分是一个判断第三和第四部分是两个常数首先判断第三部分是否成立,成立即选择第三部分,否则选择第四部分它相当于if(a&b)c=a;elsec=b;上面的例子用于获得a和b的最大值。这种运算还可以嵌套比如判断year是不是闰年,是则返回1,不是返回0flag=(year%100==0)?(year%400==0?1:0):(year%4==0?1:0)
?:用了5条,看看下面这段代码:#include &}用g++得到其对应的汇编代码.h&intmain(){ int a = 1; return 0;if/else结束L3,-12(%ebp) jmp L3L2: movl -8(%ebp); if(a &lt:开始 cmpl -4(%ebp),%eax jle L4 movl -4(%ebp),%eaxL4?这些暂且都不说!而且跟踪调试上来说: movl $1,-4(%ebp) ;a movl $2,-8(%ebp) ;b movl -4(%ebp),%if&#47: movl %eax,-12(%ebp) ; b)
c =else用了8条指令,如果说在可读性、效率上??:一定就比if/ c = a & b ? a : b:都比不上if/else:代替if/else开始 cmpl -8(%ebp),%eax jge L2 movl -4(%ebp),%eax movl %else差,那咱还要它干嘛,%eax movl %eax,-12(%ebp) ?适当的时候知道用?,这个差距大家并不觉得大吗?如果这是在一个循环里面呢: movl -8(%ebp),% ??:结束算起来,if&#47, b = 2, c
本回答被提问者采纳
-12(%ebp) ; ??:用了5条,看看下面这段代码: #include &stdio.h&else开始
cmpl -8(%ebp),
movl -4(%ebp),%if&#47:开始
cmpl -4(%ebp),-12(%ebp)
jmp L3 L2:
movl -8(%ebp),%eax
movl %eax,-12(%ebp) ; int main() {
int a = 1, b = 2;
c = a & b ? a : b,%eax L4?
这些暂且都不说!而且跟踪调试上来说,%eax
movl -4(%ebp):
return 0; } 用g++得到其对应的汇编代码:
movl $1,-4(%ebp) ;a
movl $2;else用了8条指令,如果说在可读性、效率上??:一定就比if&#47,-8(%ebp) :都比不上if/else:代替if/else,%eax
movl %else差,那咱还要它干嘛?
适当的时候知道用?,%eax
movl -4(%ebp);if/else结束 L3:
movl -8(%ebp),% ?,这个差距大家并不觉得大吗?如果这是在一个循环里面呢:结束 算起来,if/ b)
同意 匿名 的回答,代码的可读性才是重要的
效率的确不如if/else,但是差不多,可以忽略不计但是一般规范不建议使用三目运算符,主要不是出于效率考虑,而是因为三目运算符晦涩难懂,并且不容易跟踪调试
没什么区别。
其他3条回答
为您推荐:
其他类似问题
三目运算符的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 kotlin 三元表达式 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信