摘要:赋值操作合并首先,和这两行没必要写成两行,都是赋值,应此可以这样优化去掉判断如果把判断,改成三元运算符,可以减少代码,如下如果用符号,看起来更加方便当然,这两行代码,最终可以合并成如下代码至此完成,最终行代码简化成一行代码。
在实际的项目中,我们经常会有如下的需求:
从一个map中获取某key的值,如果发现对应的key的值为null,则为该key创建一个值(一般为初始值),然后把这个值存回到map中,代码如下:
var value = map[key]; if(value == null){ value = ""; map[key] = value; }
但是总感觉这段代码很恶心,为啥,太啰嗦,太长。 实际项目中,这种操作会技巧多,如果到处都是这种操作的话,就很让人崩溃。坏蛋必须死。
赋值操作合并首先,value = "" 和 map[key] = value这两行没必要写成两行,都是赋值,应此可以这样优化:
var value = map[key]; if(value == null){ value = map[key] = ""; }去掉if判断
如果把if判断,改成三元运算符,可以减少代码,如下:
var value = map[key]; value = (value == null) ?( map[key] = "") : value;
如果用 || 符号,看起来更加方便:
var value = map[key]; value = value || (map[key] = "");
当然,这两行代码,最终可以合并成如下代码:
var value = map[key] || (map[key] = "");
至此完成,最终5行代码简化成一行代码。
另外一个答案拿这个问题问公司的小伙伴,下面是另外一种答案:
var value = map[key] = map[key] || ""总结
这个问题并不难,拿这个问题问小伙伴,一些人也可以给出正确答案。但平时没有谁这样去主动思考。
欢迎关注公众号:
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/95500.html
摘要:原理采用对象距离左边的距离加固定速度。实现侧边栏分享效果用运动做一个侧边栏分享分享到当我们写好一段代码的时候,我们应该进行测试优化。实现侧边栏分享效果简化速度参数用运动做一个侧边栏分享分享到 原理 采用offsetLeft(对象距离左边的距离)加固定速度。 采用定时器setInterval和clearInterval 根据当前位置到目标位置是正值还是负值决定运行的速度为正值还是负值。...
摘要:什么交互都处理不了怎么办简化复杂度复杂逻辑后端处理的多线程上面都是的做法,但是也是处理这种问题的一把好手。换一种思路,上面就是利用实现一种伪多线程的概念。 教科书里面的setTimeout 定义很简单 setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。 广泛应用场景 定时器,轮播图,动画效果,自动滚动等等 上面一些应该是setTimeout在大家心中的样子...
摘要:创建了一个简单的计时器,在经过给定的时间后,回调函数将会被执行。接受一个计时器由之前两种计时器返回并且停止计时器回调函数的执行。然而,我们可以注意到,当定时器再一次触发在计时器回调函数正在执行的时候,这一次定时器回调函数被丢弃了。 最近都在看一些JavaScript原理层面的文章,恰巧看到了jQuery的作者的一篇关于JavaScript计时器原理的解析,于是诚惶诚恐地决定把原文翻译成...
摘要:然而异步编程真正发展壮大,的流行功不可没。于是从异步编程诞生的那一刻起,它就和回调函数绑在了一起。这个函数会起一个定时器,在超过指定时间后执行指定的函数。我们知道是异步编程的未来。 什么是异步(Asynchrony) 按照维基百科上的解释:独立于主控制流之外发生的事件就叫做异步。比如说有一段顺序执行的代码 void function main() { fA(); fB(); }...
阅读 2967·2021-10-15 09:41
阅读 1624·2021-09-22 15:56
阅读 2105·2021-08-10 09:43
阅读 3277·2019-08-30 13:56
阅读 1780·2019-08-30 12:47
阅读 652·2019-08-30 11:17
阅读 2774·2019-08-30 11:09
阅读 2196·2019-08-29 16:19