san*_*ore 48 javascript equality comparison-operators equality-operator identity-operator
为什么以下语句在JavaScript中返回false?
new String('hello') === new String('hello')
Run Code Online (Sandbox Code Playgroud)
Poi*_*nty 59
两个String 对象总是彼此不相等.请注意,JavaScript具有字符串原始值以及用于创建包装器对象的String构造函数.所有对象相等比较(尤其是与===)都是作为参考相等性的测试来执行的.对两个不同对象的引用当然永远不会彼此相等.
那"hello" === "hello"将是true因为那些是字符串原语.
Bri*_*ham 18
您正在比较对象实例,这不像是字符串比较('hello' === 'hello')比较Javascript中的对象实际上是比较对象的内存地址,并且总是返回false,因为每个对象的内存地址都不同.
比较字符串值而不是对象实例 - jsFiddle
( String('hello') === String('hello') ) // returns true due to comparing strings
Run Code Online (Sandbox Code Playgroud)
严格比较两个对象 - 假不是同一个对象
new String('hello') === new String('hello')
Run Code Online (Sandbox Code Playgroud)
严格比较两个字符串 - true,相同的返回值和相同的返回类型
String('hello') === String('hello')
Run Code Online (Sandbox Code Playgroud)
Bey*_*ios 12
它的计算结果为false,因为您正在比较两个不同的对象:new将创建一个新对象.
相关文章:JavaScript中的'new'关键字是什么?其(广泛)答案解释如下:
它[新]是4件事:
- 它创建了一个新对象.这个对象的类型就是对象.
- 它将此新对象的内部,不可访问,[[prototype]]属性设置为构造函数的外部可访问 原型对象(每个函数对象自动具有原型属性).
- 它执行构造函数,只要
this提到就使用新创建的对象.- 它返回新创建的对象,除非构造函数返回非原始值.在这种情况下,将返回该非原始值.
您要求javascript比较变量的两个不同实例,而不是变量中的字符串值.
例如,假设我写了一张纸,上面写着"Hello World"这个词(Paper1),我哥哥的另一张纸上写着"Hello World"这个词(Paper2).
当你说Paper1 === Paper2时你会得到假的,尽管它们不是完全相同的纸张,即使纸上写的字是相同的.
如果你在哪里说Paper1.toString()=== Paper2 .toString()你会得到真实,因为我们正在比较纸上写的字,而不是实际的纸本身.
typeof(new String()) === 'object';
==> true
(new Object()) === (new Object());
==> false
Run Code Online (Sandbox Code Playgroud)
" 堆 " 中的任何"对象"结构都是唯一的;
小智 5
另外,如果您执行if({{hello:1} === {hello:1}){console.log(“ yay”); } console.log永远不会发生,因为它是一个对象。
您可以通过在这些对象上循环来比较2个文字对象(作为我的第一个示例),当发现差异时,您便知道结果。在实例化的对象中执行此技巧比较困难,将两个函数进行比较非常疯狂。
但是,如果JavaScript不为您执行此操作,那是因为这很繁重,因此,您需要检查每个属性的每种类型以将其字符串化(如果它是函数等)……显然这样做是没有用的。
如果要检查2个对象“原点”,则可以使用instanceof,因为typeof将返回“对象”。为了测试2个“新字符串”对象,您必须使用toString new String(“ hello”).toString()== new String(“ hello”).toString(),或者如果您想在不测试属性的情况下检查对象新的String(“ hello”)instanceof字符串&&新的String(“ hello”)instanceof字符串
是真的。
BeyelerStudios提供的链接可以完美地解释新功能,希望对您有所帮助。
| 归档时间: |
|
| 查看次数: |
4321 次 |
| 最近记录: |