JS与PHP一样是弱语言类型,数据转换是非常简单的,很多时候都是自动转换。
数值型-》字符串型
写了两种转换方法,程序有需要时都会自动转字符串型的。
其他数据类型-》数值型
使用Number这个内置函数转换,在PHP中有类似作用的函数是intval。
楠神列出了几个常见的转换示例,从示例中可看出与PHP有两个不一样的地方,需要特别注意:
1)字符串转数值型,如果不是纯数字字符串,转换结果是NaN。这与PHP的结果是不一样的。在PHP中,11行转换结果是0,16行转换结果是7。
2)十六进制纯数字字符串,JS会把它当成十六进制数转成十进制数。而PHP会认为这不是一个纯数字字符串,会转成0。看18行代码。
3)undefined转换结果是NaN,null转换结果是0。
看16行代码,假如在JS中就想获取7,而不是NaN,有没有办法获取?
JS 提供了两种把非数字的原始值转换成数字的方法,即 parseInt() 和 parseFloat()。
对这两个方法(或者叫函数)想了解更多,可去“W3CSchool”这个手册查询相关介绍。
其他数据类型-》布尔类型
1)字符串''转成布尔值是假false,其他的都会转成布尔值真true。
特别需要注意:"0"在JS中转成布尔值是true,在PHP中转成布尔值是false。
楠神为什么特别强调这个呢?
因为我们经常会用0表示一个false,而程序中0经常被自动转成字符串'0'。不认清这点,程序会很容易出错的。
2)数值型等于0的和NaN会转成布尔值假false,其他都会转成布尔值真true。
3)undefined和null转成布尔值假false。
提示:大家看这一节内容时可以和《第四章9节PHP数据类型相互转换》的内容对比着看。