是否有任何标准JavaScript API或库以字符串对象的形式返回字符串?

直到最近,我还没有意识到JavaScript中有两种类型的字符串(以及bools和数字):诸如"blah"基元和诸如new String("blah")

他们的不同之处非常“疑难杂症”易发的方式,其中最大的一个似乎是不同typeof值( "string" VS "object" ),但其他一些存在差异,一些在MDN记录。

创建String对象没有意义,因为原始字符串的工作原理也一样,JSHint甚至将其视为错误。 所以我真的很想假装String实例甚至不存在,只支持我的代码中的原始字符串。

这让我想知道:我可以通过调用一些返回字符串的标准API来获得一个惊喜的String实例吗? 或者,假设除非有人明确写入new String ,否则我真的不会看到其中之一?


这个github搜索显示有些人正在使用new String

这个答案对String obj有一个很好的解释:

没有返回字符串的本地JavaScript对象,主要库或DOM方法将返回一个String对象而不是一个字符串值。 但是,如果您想确保您具有字符串值而不是String对象,则可以按如下方式进行转换:

var str = new String("foo");
str = "" + str;

我不知道任何约定只使用原始字符串。 也有越来越多的API可用,并且我很确定每时每刻都会有人拿出构造函数。 我想就如何quicky发现这一些调试建议,但我认为typeof检查是quicky注意区别的唯一明显的方式。

你可以使用像这样的答案,但我认为这是不值得的麻烦:

function isString(string){
     return typeof myVar == 'string' || myVar instanceof String;
};

isString("foo");             //returns true
isString(new String("bar")); //returns true
isString({});                //returns false;

结论:恐怕你只需要祈祷你不会遇到这些古怪的角落案例。

链接地址: http://www.djcxy.com/p/94983.html

上一篇: Do any standard JavaScript APIs or libraries return strings as String objects?

下一篇: Easier way to have RegExp.test() return false for null values?