是否有任何标准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?