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 }
在这里尝试