Javascript如果未定义不起作用

Lef*_*eff 1 javascript

我正在使用三元表达式来检查变量是否存在以相应地显示值,但是因为,我需要检查它是否存在并且其中有一些值,它在未定义变量时检查条件时失败.我该如何解决这个问题?

这是代码:

$('#select').selectize({
    items: typeof icoop != "undefined" && icoop != null ||  icoop.selectedUsers.length < 1 ? icoop.selectedUsers : []
});
Run Code Online (Sandbox Code Playgroud)

我明白了:

未捕获的ReferenceError:未定义icoop

Mat*_*ero 5

icoop是的undefined,因此访问任何属性或功能将失败.

检查icoop前检查icoop.selectedUsers:

$('#select').selectize({
     items: (typeof icoop !== 'undefined' && icoop && icoop.selectedUsers && icoop.selectedUsers.length > 0) ? icoop.selectedUsers : []
});
Run Code Online (Sandbox Code Playgroud)

您也可以稍微清理一下代码:

// Check for icoop existence. Assign a default value if it is undefined or null.
var icoop = (typeof icoop !== 'undefined' && icoop) || {};

$('#select').selectize({
     items: (Array.isArray(icoop.selectedUsers) && icoop.selectedUsers) || []
});
Run Code Online (Sandbox Code Playgroud)