威尔(变量或{})在Javascript工作跨浏览器?
-
18-09-2019 - |
题
在以下的if(variable)
子句构建检查列表/数组不为null /未定义,为了避免异常:
if (list)
for (var k in list) {
...
if (array)
for (var i = array.length; i >= 0; i--) {
...
但是JS语法允许这样的表达式
null || []
undefined || {}
因此,我可以使代码由一个线短,仍然检查数组/对象:
for (var k in obj || {}) {
...
for (var i = (array || {}).length; i >= 0; i--) {
...
的问题本质上是:不null/undefined || []/{}
表达返回后者在所有浏览器
编辑:发现,大括号是for (var k in list || {})
迭代更好,因为阵列(方括号中)引起的迭代并且将引发异常
解决方案
是,null
,undefined
,0
,""
,将所有决心false
,当作为布尔处理(其||
操作者所做的),等等,所有浏览器将使用后者。此行为是完全安全的。
其他提示
是
我讨厌15炭限制。
不隶属于 StackOverflow