如果我做...
[] instanceof Array;
true
...尽管我没有使用它,但它会返回new Array()
。
但如果我这样做...
"" instanceof String;
...它返回false
是因为我没有使用new String()
.
为什么?我知道这[]
是一种用于创建数组""
的语言构造,也是一种用于创建字符串的语言构造。所以我不明白为什么一个返回true
,另一个返回false
。
此外,以下所有代码都返回true
:
[] instanceof Array; /* true */
Array() instanceof Array; /* true */
new Array() instanceof Array; /* true */
但是用字符串:
"" instanceof String; /* false */
String() instanceof String; /* false */
new String() instanceof String; /* true */
也不应该String() instanceof String
回来true
吗?
编辑:
我提出了一个新问题(这个问题的衍生问题):检查变量是否为字符串的简单方法?