Javascript!instanceof If语句

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

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! } 

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

括在括号内,在外面否定。

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

正确的方法来检查这一点 – 正如其他人已经回答。 另外两个build议的策略将不起作用,应该理解…

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

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

在这种情况下,优先顺序很重要( https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Operator_Precedence )。 那! 运算符在instanceof运算符之前。 所以, !obj首先被计算为false (它相当于! Boolean(obj) ); 那么你正在testing是否false instanceof Array ,这显然是否定的。

!的情况下! 运算符之前的运算符。

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

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

忘记括号(括号)很容易,所以你可以养成这样的习惯:

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

要么

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

在这里尝试