javascript的比较总结
在Javascript应用程序的过程中,会有各种各样的比较。今天,已经安排和研究了三种情况。1。两个物体的比较
比较javascript中混合了一些奇怪的属性,我们来看看比较简单的一些比较。
原始值比较
> var a = 12
未定义
> var b = 12
未定义
>
真正的
A = B
真正的
对象比较
>
未定义
>
未定义
>
假
c=d
假
从以上结果可以看出,两个原始值的比较似乎与比较对象规则有点不同。比较两个对象值,即使它们具有相同的值,最终结果也是不同的。比较两个对象时,应该将其与两个对象的引用进行比较。
如果我们这样做:
m = { }
未定义
>
{ }
N=m
真正的
这意味着所有两个变量都指向同一个对象,所以它们是相同的。
2。不同类型的比较
以下是一个特例
> 12=12
真正的
>未定义的
真正的
>未定义= = false
假
>空= false
假
未定义的
假
为什么这是由于字符串的整数==(等于和非一致)不比较类型,它需要比较前值类型转换,在这里你会把一个字符串转换成一个数字类型,然后比较。
> > 1 + 2
三
> 1 + 2
12
< 12 > 2
真正的
2 < 12
假
从上面的例子中可以看到,数字2实际上比字符串12小。如果比较在比较之前转换成字符串,结果应该是212。
还不信吗让我给你举个例子。
> >12d> 12
假
>12d<12
假
12d= = > 12
假
> 12 <12d
真正的
为什么会这样如果要将12转换为字符串,然后12D应该超过12。为什么都是假的我想是因为下面那个特别的人。
< < < 1 >
假
>南方>1
假
不管是什么,楠都会返回false,包括它自己,所以判断一个变量是否是南方的最好方法是x!= x如果是真实的,那么X是楠。应该说,当12d转换为数字类型,它将成为南由于特殊字符。与数值类型相比,结果是错误的。
对于数字运算符和字符串运算符,加法运算符不同于比较运算符。加号运算符偏爱字符串,如果其中一个操作数是字符串,则它转换为字符串。比较运算符支持数字,字符串仅在两个数字都是字符串时进行比较。
至于以上的空和未定义的,我不知道如何解释他们的行为暂时。我只能记住它。因为他们更特殊的。
3比较。对象和原始值
如果两个对象需要比较一个是一个对象的Javascript是一个字符串,然后一个特定类型的类型转换将被执行。尝试将对象的值转换为原来的值。一般来说,有价值的,两方法toString。下面是一个空的对象转换过程:
我写明文。
= { }
{ }
1。 / /价值转换
> > a.valueof()
{ }
2。/如果以上操作不是原始值,然后使用ToString转换(反之亦然)。
> > a.tostring()
{对象对象}
>对象对象}
真正的
它实际上是一个内置的对象和机制对Javascript的转化过程。首先,它将调用值变换。如果值是不是原来的值,然后调用ToString来变换。最终值是{对象},这是一个非常奇怪的值,但它是原始值。如果变量A等于值(不等于),可以得到一个真值的结果。
然而,权威指南给出了以下原则,我们可以参考。
对Javascript语言核心的内置类首先尝试使用价值转换的原始值的转换,然后使用ToString转换。除了日期类,它只使用ToString转换。那些不在Javascript核心转换到原始值,他们在各自的实现方式的定义。
根据上述的解释。我们= {}与原始值进行比较,将调用函数的第一个值,结果显然不是一个原始值{ }。toString是用于转换,这是一个非常奇怪的结果。但这奇怪的结果{对象的初始值}是{ }。(它是一个字符串字面量)。
以上是Javascript的比较总结,希望本文能帮助您学习Javascript。