Prevent error “is undefined” in if statement
本问题已经有最佳答案,请猛点这里访问。
我的问题是更有效地防止"变量未定义"错误。
例如
如果我使用以下代码:
1 2 3 4 5 6 7 | if (array[index] != undefined) { if (array[index].id == 1) { // code } } |
它会很好用的。但是,我能用吗
1 2 3 4 | if (array[index] != undefined && array[index].id == 1) { // code } |
如果没有得到"变量未定义"的错误,那么如果
(我现在不能在我的代码中准确地测试这个,因为我正在构建一个客户机-服务器应用程序,我需要修改很多行来尝试它,所以我在这里问它。如果不合适,我很抱歉)
&& will return true only if both the values of (a && b )a andb are truthy values.
如果第一个操作数(
使用typeof评估未定义变量的更好做法是:
1 2 3 4 | if ( typeof array[index] !== 'undefined' && array[index].id == 1) { // code } |
记住要检查字符串"未定义"而不是基元值。
MDN中的更多信息
如果必须检查数组本身是否未定义,则必须同时检查其中的typeof数组。像这样:
1 2 3 4 5 6 | if(typeof array !== 'undefined'){ if ( typeof array[index] !== 'undefined' && array[index].id == 1) { // code } } |
只有当
如果任何一个表达式的计算结果为假,则整个表达式的计算结果为假。
不,如果数组未定义,则需要一个如下所示的if语句:
1 2 3 | if (array && array[index] !== undefined && array[index].id === 1) { // do things } |
第一个条件,如果为false,将停止对所有其他条件的评估。唯一失败的方法是,如果您在严格模式下运行代码,并且从未声明
是的,如果第一个条件失败,它将短路并忽略其他条件,就像任何语言一样。