直到最近,我才意识到JavaScript中有两种类型的字符串(以及布尔值和数字):诸如的原语"blah"
和诸如的对象new String("blah")
。
它们之间的差异非常容易发生,其中最大的一个似乎是不同的typeof
值("string"
vs "object"
),但是还存在许多其他差异,其中一些已记录在MDN中。
创建String对象没有任何意义,因为原始字符串也可以正常工作,并且JSHint甚至将其视为error。所以我真的很想假装String实例甚至不存在,而只在我的代码中支持原始字符串。
这让我感到奇怪:我能否通过调用一些返回字符串的标准API来获得一个意外的String实例?还是真的可以安全地假设,除非有人通过显式写法搞砸了,否则new String
我将永远不会看到其中之一?
这个github搜索显示有些人正在使用new String
。
而这个答案对字符串的obj一个很好的解释:
返回字符串的本机JavaScript对象,主库或DOM方法都不会返回String对象而不是字符串值。但是,如果要绝对确定您拥有一个字符串值而不是一个String对象,则可以按以下方式进行转换:
var str = new String("foo"); str = "" + str;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句