javascript中var a = (expression1, expression2)背后的原因是什么?
What is the reason behind var a = (expression1, expression2) in javascript?
通过一些JS代码,我发现了这样的东西:
var a, b;
if (
(a = someFunction1(), b = someFunction2() )
){
...
}
我以前从未发现过这样的事情,我不明白为什么要做这样的事情。因此,我很好奇:做这件事的人是疯了还是我无法理解他的想法?
当我尝试检查像(expression1, expression2)
这样的结构时,我看到它总是返回第二个表达式的值:
(5, 6) // 6
('strange', 'things') // 'things'
(4, undefined) // undefined
如果我是写这段代码的人,我会这样做:
var a = someFunction1(),
b = someFunction2();
if (b){ ... }
我的推理正确吗?
当我尝试检查像
的值(expression1, expression2)
这样的结构时,我看到它总是返回第二个表达式
是的。即使没有尝试,这也是逗号操作符的作用。
我的推理正确吗?
是的。您的代码做完全相同的事情,但更可读。
你是对的,那本质上是if(b)
。第一个版本的可读性很糟糕,而且不节省空间,所以这样缩小是没有意义的。
在条件语句中分配变量是不好的做法。
相关文章:
- “var self = this”方法背后的原理是什么?
- React Router 如何处理 onEnter 背后的逻辑是什么?
- 让函数中的接收器默认为全局对象背后的基本原理是什么?
- AJAX 跨域安全背后的基本原理是什么?
- Facebook评论API - Facebook所说的“评论框背后”是什么意思
- Lightstreamer背后的魔力是什么
- d3背后的逻辑是什么.js nice()刻度
- JavaScript:“shift”方法背后的逻辑是什么?
- Math.max方法背后的逻辑是什么
- 与compareFunction一起使用的排序方法背后的逻辑是什么
- 用continuation生成Javascript代码背后的诀窍是什么
- 窗口背后的原因和窗口的顶部属性是什么
- 名称空间背后的概念是什么
- 堆栈溢出背后的算法是什么? ajax标记搜索字段
- 网站上的3D图像非常酷,但这背后的技术是什么?
- 使用Object.assign创建对象背后的思想是什么?
- canPlayType背后的原理是什么?
- javascript中var a = (expression1, expression2)背后的原因是什么?
- 错误处理-当JavaScript抛出ReferenceError时,其背后的逻辑是什么
- 选择一个完整的基于CSS的菜单和基于Javascript/CSS的菜单背后的基本原理是什么?