Difference between == and === in JavaScript
Possible Duplicate:
Javascript === vs == : Does it matter which “equal” operator I use?
在javascript中,==和===有什么区别?我也见过!=和!==的操作员。有更多这样的运营商吗?
- 下面详细比较了javascript中的两个操作符和性能测试
- ==是带有类型转换(即强制)的===。为了真正理解我的意思,您可以看看这个javascript函数,它的行为与==完全相同:stackoverflow.com/a/38856418/984780
- 除了==和!==在JS中,它们还应该添加+==和-==以增加或减少(仅当类型相同时)。
请看:http://longgoldenears.blogspot.com/2007/09/triple-equals-in-javascript.html
这3个等号表示"没有类型强制的平等"。使用"三重等于"时,类型中的值也必须相等。
1 2 3 4 5 6 7 8
| 0 == false // true
0 === false // false, because they are of a different type
1 =="1" // true, automatic type conversion for value only
1 ==="1" // false, because they are of a different type
null == undefined // true
null === undefined // false
'0' == false // true
'0' === false // false |
- 明确的答案谢谢!我想如果#相比还将在C = = = = = =是),和.equals(翻译)
- 是什么"new String()==new String()",都是同一类型的值的和。但语句返回false。
- 在这样的案例:"hrishikeshp19,真值是不同的(不同的对象引用)
- "我认为你koenzomers #盒C是正确的。真的有equivalents #在C大调。在# = C的参考比较,与一个预定义的比较中,他们已经没有任何equivalents JavaScript。
- hrishikeshp19 new String()",不是一个字符串类型,它是一个对象的类型,操作系统=对象的规则是适用的。使用原始的字符串),然而,结果往往coercing弦为差分操作系统的String对象是难以捉摸的。如果你是在两个不同的对象到assign new String(),s1和s2,valueOf()将返回字符串的方法在线每个为每个原始,和s1.valueOf() === s2.valueOf()true将返回。
- 也为"0"= = =真的空/ /和/的真义
- 有人可以解释为什么falsetrue =="true"是吗?
- 在一些情况下,你会认为我会想使用==在===获得例如,从文本输入的价值将是"1234"/ / /字符串不是1234号
- 有== -1速度之间的差异和=== -1是anArray.indexOf(el)吗?
- 但由于true == 'true' === falsealexandruseverin true == '1' === true",我会说,true1得到转换,这是一'1'然后转换,然后'1' == 'true' === false && '1' == '1' === true
- 伊丽莎白,你只是想"给我一块true == 'true' === false的评论。不解释,但它可能给你一些提示。
- "你可以有一个以上的sdfx式盒的例子。你写道:"3型均无强制平等平等的标志。使用的三个值,必须是平等的,以及在型。"我想你的意思写符号"2"型等均没有强制的平等。""3"……"这是正确的吗?
- 退房更多意想不到的例子38856418 984780 stackoverflow.com / / /
- 不正确的:C大调"earthengine预#比较与参考==只能参考类型。如果比较值类型的潜在的内存值。与其他int a = 3; var b = (a == 3);b将永远是假;)
- "事实是,==shockwaver《C大调#只能参考参考比较的类型(类类型时,有一个自定义的==)在运营商(operator==)的定义。你可以看到这是真的,特别是如果它是String:定义的参考值比较,没有比较,因为过重的存在)的运营商。
- @当然,但是所有系统定义的值类型都会在它们的operator==重载中调用值比较。更一般地说,正如您现在所说的,==行为确实是在方法体内部决定的。但当你之前说(5年前xd sry)==只做参考比较时,这是不正确的;
- 例如,您可以使引用类型operator==重载与内存中的对象值匹配!
- 事实上,我在上次评论中已经同意了你的意见,并给出了另一个反例:string是参照物,但它的==是按价值比较的,不是参照物。
- @riship89从不将原语(数字、字符串、布尔值等)声明为对象,因为它会产生讨厌的副作用,例如var x="john";var y=new string("john");x==y将给出false。
===和!==是严格的比较运算符:
JavaScript has both strict and
type-converting equality comparison.
For strict equality the objects being
compared must have the same type and:
-
Two strings are strictly equal when they have the same sequence of
characters, same length, and same
characters in corresponding positions.
-
Two numbers are strictly equal when they are numerically equal (have
the same number value). NaN is not
equal to anything, including NaN.
Positive and negative zeros are equal
to one another.
-
Two Boolean operands are strictly equal if both are true or
both are false.
-
Two objects are strictly equal if they refer to the same Object.
-
Null and Undefined types are == (but not ===). [I.e. (Null==Undefined) is true but (Null===Undefined) is false]
比较运算符-MDC
- 如果我的操作系统,例如:if (input == null) ...,它也将使真正的当输入条件是不确定的?
- 它的声音,使上述的比较不是= =所有的事情在第一次检查中的子弹点,"相同的序列相同的长度和相同的特点,在相应的位置的字符,但它不在的事实"。只要我可以告诉真正的差分比较两个字符串时,只有那是用==,(不同的对象的引用new String()===new String()返回false)。但无论如何new String应该可以避免的。
- 1的问题是"什么是差分?"你只有在严格的解释,而不是差分算子,在他们之间和非严格。
- I didn’t get"是两个平等的参考对象是"如果他们对同一对象"-什么?由两个对象的两个参考变量的值,这有什么关系吗?
- 简单的英语描述的问题是国有企业38856418 984780 stackoverflow.com / / /