如何在JavaScript中测试方法而不出错?
代码如下:如何在JavaScript中测试方法而不出错?,javascript,Javascript,代码如下: if(!typeOf(node.parentNode)) return null; 以下是错误: Uncaught TypeError: Cannot read property 'parentNode' of null 我正在尝试测试它是否为null/未定义/false。但它不断地向我发送错误 如何测试它而不使if语句出错?也测试对象引用: if (!node || !node.parentNode) return null; 如果“node”真的可以是任何东西(例如,对象引
if(!typeOf(node.parentNode)) return null;
以下是错误:
Uncaught TypeError: Cannot read property 'parentNode' of null
我正在尝试测试它是否为null/未定义/false。但它不断地向我发送错误
如何测试它而不使if语句出错?也测试对象引用:
if (!node || !node.parentNode) return null;
如果“node”真的可以是任何东西(例如,对象引用之外的字符串或数字),您还需要测试类型。也测试对象引用:
if (!node || !node.parentNode) return null;
如果“node”真的可以是任何东西(例如,对象引用之外的字符串或数字),您还需要测试类型。也测试对象引用:
if (!node || !node.parentNode) return null;
如果“node”真的可以是任何东西(例如,对象引用之外的字符串或数字),您还需要测试类型。也测试对象引用:
if (!node || !node.parentNode) return null;
如果“node”真的可以是任何东西(比如除了对象引用之外的字符串或数字),您还需要测试类型。您必须先检查
node
是否为null
if(!node || !node.parentNode) {
return null;
}
这也称为“短路”评估。当它看到!节点
为真
,它将立即执行块内的内容,因为运算符是OR(|
),并且在或中,如果其中一个输入为真
,则结果只能是真
而且,
typeof
是一个关键字;不是函数(尽管您的代码仍然可以工作) 首先必须检查节点
是否为null
if(!node || !node.parentNode) {
return null;
}
这也称为“短路”评估。当它看到!节点
为真
,它将立即执行块内的内容,因为运算符是OR(|
),并且在或中,如果其中一个输入为真
,则结果只能是真
而且,
typeof
是一个关键字;不是函数(尽管您的代码仍然可以工作) 首先必须检查节点
是否为null
if(!node || !node.parentNode) {
return null;
}
这也称为“短路”评估。当它看到!节点
为真
,它将立即执行块内的内容,因为运算符是OR(|
),并且在或中,如果其中一个输入为真
,则结果只能是真
而且,
typeof
是一个关键字;不是函数(尽管您的代码仍然可以工作) 首先必须检查节点
是否为null
if(!node || !node.parentNode) {
return null;
}
这也称为“短路”评估。当它看到!节点
为真
,它将立即执行块内的内容,因为运算符是OR(|
),并且在或中,如果其中一个输入为真
,则结果只能是真
而且,
typeof
是一个关键字;不是函数(尽管您的代码仍然可以工作) 正如其他答案所提到的,您的特定错误来自于您的节点对象实际上是空的。如果node.parentNode存在且不为null,最可靠的测试方法是:
if ((typeof node==='undefined') || !node || !node.parentNode) return null;
这包括以下情况:
变量不存在节点
变量为空或未定义节点
是falsy(parentNode
)未定义、null、false、0、NaN或“”
typeof node===“undefined”
),因为它掩盖了未声明的变量,这可能会导致以后出现问题:
function f() {
if (typeof node==='undefined') {
node = {}; // global variable node, usually not what you want
}
}
正如前面提到的其他答案一样,您的特定错误来自这样一个事实:您的节点对象实际上是空的。如果node.parentNode存在且不为null,最可靠的测试方法是:
if ((typeof node==='undefined') || !node || !node.parentNode) return null;
这包括以下情况:
变量不存在节点
变量为空或未定义节点
是falsy(parentNode
)未定义、null、false、0、NaN或“”
typeof node===“undefined”
),因为它掩盖了未声明的变量,这可能会导致以后出现问题:
function f() {
if (typeof node==='undefined') {
node = {}; // global variable node, usually not what you want
}
}
正如前面提到的其他答案一样,您的特定错误来自这样一个事实:您的节点对象实际上是空的。如果node.parentNode存在且不为null,最可靠的测试方法是:
if ((typeof node==='undefined') || !node || !node.parentNode) return null;
这包括以下情况:
变量不存在节点
变量为空或未定义节点
是falsy(parentNode
)未定义、null、false、0、NaN或“”
typeof node===“undefined”
),因为它掩盖了未声明的变量,这可能会导致以后出现问题:
function f() {
if (typeof node==='undefined') {
node = {}; // global variable node, usually not what you want
}
}
正如前面提到的其他答案一样,您的特定错误来自这样一个事实:您的节点对象实际上是空的。如果node.parentNode存在且不为null,最可靠的测试方法是:
if ((typeof node==='undefined') || !node || !node.parentNode) return null;
这包括以下情况:
变量不存在节点
变量为空或未定义节点
是falsy(parentNode
)未定义、null、false、0、NaN或“”
typeof node===“undefined”
),因为它掩盖了未声明的变量,这可能会导致以后出现问题:
function f() {
if (typeof node==='undefined') {
node = {}; // global variable node, usually not what you want
}
}
如果
节点
变量不存在,则应允许该错误,以便正确声明该错误。原因是如果它没有被声明,并且在其他地方有赋值,它将创建一个隐式全局变量。因此,最好获取ReferenceError,以便您可以修复它,而不是使用typeof
隐藏它。@blueskies