Javascript !instanceof If Statement

2022-08-30 00:42:28

这是一个非常基本的问题,只是为了满足我的好奇心,但是有没有办法做这样的事情:

if(obj !instanceof Array) {
    //The object is not an instance of Array
} else {
    //The object is an instance of Array
}

这里的关键是能够使用 NOT !在实例前面。通常我必须设置它的方式是这样的:

if(obj instanceof Array) {
    //Do nothing here
} else {
    //The object is not an instance of Array
    //Perform actions!
}

当我只是想知道对象是否是特定类型时,必须创建一个 else 语句有点烦人。


答案 1

用括号括起来,在外面否定。

if(!(obj instanceof Array)) {
    //...
}

在这种情况下,优先级顺序很重要。请参见:运算符优先级

运算符位于运算符之前。!instanceof


答案 2
if (!(obj instanceof Array)) {
    // do something
}

这是检查此问题的正确方法 - 正如其他人已经回答的那样。已经提出的另外两种策略将不起作用,应该被理解......

在没有括号的操作员的情况下。!

if (!obj instanceof Array) {
    // do something
}

在这种情况下,优先级顺序很重要(https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Operator_Precedence)。运算符位于运算符之前。所以,评估到第一(它相当于);然后你正在测试是否,这显然是负面的。!instanceof!objfalse! Boolean(obj)false instanceof Array

在操作员之前的情况下, 运算符。!instanceof

if (obj !instanceof Array) {
    // do something
}

这是一个语法错误。诸如 之类的运算符是单个运算符,而不是应用于 EQUALS 的 NOT 运算符。没有这样的运算符,就像没有运算符一样。!=!instanceof!<