【发布时间】:2016-09-05 16:18:52
【问题描述】:
到目前为止我所拥有的。
const isNotNullObject = function (x) {
return (typeof x === "object" && x !== null);
};
它适用于数组和对象。但对于 String 对象也是如此!
isNotNullObject(String(5))
false
isNotNullObject(new String(5))
true
我想要的对于任何类型的字符串都是错误的。请注意,我无法控制调用代码。我自己无法删除new。出于性能原因,我需要一个不创建新字符串的解决方案,以检查是否相等。
【问题讨论】:
-
为什么不
typeof x == "object" && typeof x != "string"? -
@ifvictr 刚刚说了什么!
-
但是字符串对象是对象。像这样对待它们并假设您的调用者知道不包装字符串。
-
@ifvictr: 如果
typeof x == "object"是true,那么我们已经知道typeof x != "string"也是true。typeof x的值在第一次比较后不会改变。 -
字符串对象是对象 - 是的,规范的噱头。
标签: javascript