我已经查看了stackoverflow上的所有问题和答案,但无法找到简单的答案。
字符串和对象之间究竟有什么区别?
例如,如果我有这段代码:
new BitArray(yourArray).CopyTo(intArray, 0);
究竟有什么区别?
我了解var a = 'Tim';
var b = new String('Tim');
会使代码变得复杂,而new
会使代码变慢。
此外,我了解new String
为a==b
,但更严格true
为a===b
。为什么呢?
我似乎无法理解对象和字符串创建背后的过程。 例如:
false
var a = new String ('Tim');
var b = new String ('Tim');
是a==b
答案 0 :(得分:6)
a
的类型为字符串,而b
的类型为object。
===
包括类型检查,因此字符串不是对象
a === b
将为您提供false
new String ('Tim') === new String ('Tim')
也会评估为false,因为两者都是不同的对象
答案 1 :(得分:3)
对于普通字符串,不需要创建对象,只需创建变量并为其赋值。
至于你为什么==是真的问题,===是假的,因为:
==比较值 ===比较值和类型(一个是字符串,一个是对象)。
另一个例子是:
var a = 1;
var b =' 1&#39 ;;
a == b //为真,因为它们都具有相同的值
a === b // false,因为一个是字符串,一个是整数
答案 2 :(得分:1)
您可以执行以下操作来查看差异:
var a = "foo";
var b = new String("foo");
console.log(a);
console.log(b);
第一个是字符串文字,第二个是字符串对象。这就是为什么当你比较它们时它们不相等但是当你比较它们的价值时。您可以阅读有关文字here的更多信息。