第十二章:第7节JavaScript数据类型比较

更新于:2023-07-12 10:19:43

(1)比较两个数的大小:


数值型的我们不用比较,只做下字符串与数值型和字符串与字符串之间的比较。


1.png

1.png

上面例子中的数据完全和《第四章:第11节 PHP运算符-比较运算符》的数据一样


可结果却不太一样:


总结下:


1)在JS中,字符串与字符串做比较,按两边首个字符的ascii码对应的值比较,首字符一样,就往下比较,直到不一样分出大小。


2)在PHP中,如果两边都是纯数字字符串,转为数字比较。可在JS中,还是当做字符串去比较。(重点!易出错的地方


3)在PHP中,如果一边有数字(整数型、浮点型),另一边转为数字比较。JS也符合这项规则,另一边如果是纯数字字符串会转成数字,不是纯数字字符串会变成数字NaN


4)如果有布尔值,true转换数值1,false转换数值0做比较。这点JS和PHP是一样的。


(2)比较两个数是否相等:


1.png

document.write(0 == "");//true

1.png


总结:


1)字符串与字符串做相等比较,会比较两个字符串是否完全一样。哪怕是两个纯数字字符串,也是做字符串相等比较,而不是数字比较。这点和PHP不一样。


2)数值与字符串相等比较,字符串会转成数值型,和PHP一样。


3)数值与布尔值相等比较,布尔值false会转成数值0,true会转成数值1。这点和PHP不一样,在PHP中是数值转成布尔值。


4)字符串与布尔值相等比较,它们都是转成数值后做相等比较。(也就是所有的比较都转成数值型为准)这点也和PHP不一样,这样就会出现下面的情况:


1.png

在PHP下,上面两个if语句都是真(true);而在JS,上面两个if语句第一个是真(true),第二个是假(false)。


注意:if语句在程序中用得非常多,喜欢这样写if条件的朋友要特别注意下,不然会出错的。


5)“undefined”和“null”最好不要参与相等比较,经过楠神几次测试,出现这样的结果:


1.png


“undefined”和“null”是可以相等的,但与其他数据类型全不是相等的。


三节内容总结:


通过这三节内容介绍,会发现JS虽然和PHP语法相差不多,可某些数据运算后的结果却完全不一样。所以我们一定要搞清楚,不然在写JS代码时很容易想当然地把PHP中运算结果想象成JS也是这样的结果,这样很容易给自己造成困惑。


通过与JS的比对,楠神感觉还是PHP更人性化,比较符合人直观的思维。比如:


"0"转成布尔值,第一反应把它当成false,可JS却偏偏把它当成true;


'30000' > '100000',第一反应会认为它是false,可JS却偏偏把它当成true。


null == false ,第一反应会认为它是true,可JS却偏偏是false。


10+'20',第一反应会认为结果是30,可JS却把它当字符串连接起来了。


总之,JS处处是“陷阱”。


本节学习代码》》》