在以下的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 || {})迭代更好,因为阵列(方括号中)引起的迭代并且将引发异常

有帮助吗?

解决方案

是,nullundefined0"",将所有决心false,当作为布尔处理(其||操作者所做的),等等,所有浏览器将使用后者。此行为是完全安全的。

其他提示

我讨厌15炭限制。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top