回答
表达_a || []
将返回_a
如果是“truthy”,否则[]
(它被短路,所以只判断直到有的操作数是'真'的,或者他们都被评估过)。
这实质上是检查null。如果_a
为空或未定义(或者为false,但在此方案中不可能),那么它将被初始化为一个空数组。
重要的是要注意,下面的结果是错误的'truthy'检查(或者,我可以说'falsy'值):false,null,undefined,空字符串, 0','parseInt({})'(导致'NaN'是虚假的)。 – Marshall 2012-03-10 00:20:04
@马歇尔:谢谢。我不是一位JS专家,在业余时间只是忙于此(我是系统人员)。我特意使用了'truthy',因为我认为我可能会错过一个或多个案例。再次感谢。 – 2012-03-10 00:25:36
对于系统人员来说,这是一个坚实的答案。很多使用JavaScript的人甚至不理解真值;) – Marshall 2012-03-10 00:33:03
如果_a
已经定义,然后使用它的值,否则初始化空数组
这使默认状态\值。如果当前范围中没有_a
,或者它不是任何类型的真或值,则它将被创建为空数组。如果存在,它会被重新分配给自己,这不是一个很好的做法。它2例是有用的:
的方法(功能)的内部 - 的另一功能可能会返回一个阵列或空(例如)。如果你需要隐含数组的方法,你保证
_a
是一个数组:var _a = _a || [];
传递为参数 - 如果你需要传递数组作为参数。如果参数为null并且在方法内部隐式需要一个数组(这是分配一个默认参数),但它不应该覆盖参数。它必须被分配到一个新的变量(我认为这是因为下划线的情况下):
function doSomething (a, b, c) { ... var _a = a || []; ... }
- 1. 初学者逻辑开发
- 2. 对象代码圆括号(初学者)
- 3. Javascript初学者
- 4. jQuery初学者 - 解释这个if语句的逻辑吗?
- 5. Javascript初学者的作业?
- 6. 初学者的JavaScript问题
- 7. 闰年布尔逻辑:包括括号?
- 8. C++初学者逻辑错误 - 返回0
- 9. Java初学者需要逻辑错误帮助
- 10. 初学者Java布尔逻辑比较输入值
- 11. 香草Javascript初学者
- 12. HTML,javascript和jQuery - 初学者
- 13. 正则表达式的逻辑括号...?
- 14. 初学者的Windows IDE /编辑器
- 15. AMN和数学逻辑符号
- 16. 初学者主题Prestashop 1.7是空的
- 17. 如何包括编辑器的数学符号或文本框
- 18. JavaScript的初学者,加载PHP文件
- 19. 初学者问题:Javascript中的变量
- 20. JavaScript的初学者,帮我使用Firebug
- 21. 简单的JavaScript与初学者
- 22. Apache或WAMP的PHP初学者?
- 23. Rails初学者的“Cheatsheet”或清单?
- 24. 初学者:Python或Django的is_new
- 25. DirectX 9或DirectX 10的初学者?
- 26. CakePHP初学者
- 27. Asp.net初学者
- 28. 初学者
- 29. Hadoop初学者
- 30. twitterbootstrap:初学者
看看http://en.wikipedia.org/wiki/Short-circuit_evaluation – dave 2012-03-10 00:13:59