首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Javascript !instanceof If语句

Javascript !instanceof If语句
EN

Stack Overflow用户
提问于 2012-01-16 12:48:52
回答 2查看 80K关注 0票数 223

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

代码语言:javascript
复制
if(obj !instanceof Array) {
    //The object is not an instance of Array
} else {
    //The object is an instance of Array
}

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

代码语言:javascript
复制
if(obj instanceof Array) {
    //Do nothing here
} else {
    //The object is not an instance of Array
    //Perform actions!
}

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-16 12:51:57

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

代码语言:javascript
复制
if(!(obj instanceof Array)) {
    //...
}

在这种情况下,优先级顺序很重要(https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Operator_Precedence)。那!运算符位于instanceof运算符之前。

票数 412
EN

Stack Overflow用户

发布于 2013-03-12 19:05:16

代码语言:javascript
复制
if (!(obj instanceof Array)) {
    // do something
}

是检查这一点的正确方法--正如其他人已经回答的那样。已经提出的另外两种策略不会奏效,应该理解……

在不带括号的!运算符的情况下。

代码语言:javascript
复制
if (!obj instanceof Array) {
    // do something
}

在这种情况下,优先级顺序很重要(https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Operator_Precedence)。!运算符位于instanceof运算符之前。因此,!obj首先计算为false (相当于! Boolean(obj));然后测试false instanceof Array,这显然是负的。

instanceof运算符之前使用!运算符的情况下。

代码语言:javascript
复制
if (obj !instanceof Array) {
    // do something
}

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

票数 83
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8875878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档