我正在阅读String literal和String对象之间的区别。看到 What is the difference between string literals and String objects in JavaScript?
但是我有点混淆,因为它解释了你可以使用字符串对象的方法但技术上是字符串文字字符串对象?我不会问我们是否可以使用相同的方法,只有当String文字是一个对象时。谢谢!
答案 0 :(得分:3)
术语"字符串文字"是指直接在代码中表示字符串值的语法约定。
代码
"Hello Everyone"
是包含14个字符的字符串的字符串文字。
由字符串文字表示的值是一个字符串基元。它不是一个对象。这就是为什么你使用:
typeof "Hello Everyone"
这将返回值"string"
,而不是"object"
。
JavaScript允许任何字符串原语的boxing在某些情况下将它们提升为字符串对象。尝试在字符串值上调用方法是这些情况之一。所以如果你打电话:
"Hello Everyone".toUpperCase()
此文字表示的值将被装入字符串Object中,并且将在该对象上调用该方法。
答案 1 :(得分:0)
您可以使用typeof
运算符检查Javascript变量的类型。 typeof "Hello World"
和typeof String("Hello World")
都返回类型"字符串"。
此外,严格相等的检查"Hello" === String("Hello")
返回true,这意味着它们不仅仅是值相等而且类型相等。
然而,typeof new String("Hello World")
返回" object"。
答案 2 :(得分:-2)
技术上没有,但是每个文字字符串都可以应用字符串方法和函数。 E.g。
alert("Literal String".toUpperCase());
因此,对于所有意图和目的,字符串文字可以表现得像String对象,并且您不必执行var ls = new String("Literal String");
之类的操作;如果应用得当,可以制作非常优雅的代码。
在使用typeof
运算符时可能会咬你的地方,在这种情况下,你会发现它们不同。