在Java中,基本类型之间的强制转换也不是这样的,好比,整数要转换成字符串,必须使用Integer.toString()静态方法或者String.valueOf()静态方法,把字符串转换为整数,必须使用Integer.valueOf()。
可见,不能把JavaScript中的类型转换看做为“强制类型转换”。
在JavaScript中,Double类型和Int类型都是看做为Number对象,所以不管是typeof 1仍是typeof 1.0,都是返回number。这样咱们能够不用去管是Int仍是Double类型,让JavaScript解释引擎内部去处理。
javascript
注:Number、String函数是特殊的函数,在JS引擎中,他会自动判断是做为构造函数调用仍是普通调用,因此既可使用new关键字,也能够做为函数直接调用。
关于JS的参考手册,微软有一个CHM十分不错,指南、API参考都有,是Windows脚本技术,中文版,我在MSDN上下载的。而关于JS解释引擎的,我参考的是Netscape的Spidermonkey,如今由Mozilla组织维护。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
java
得出是数字的累加
否则成字符串链接了
ide
众所周知,JavaScript 是一种弱类型的脚本语言。其在声明变量时,无须指定数据类型,这也就给予了JavaScript所须要的灵活性和简单性。JavaScrip对数据类型的灵活处理方式的一个重要体现是自动类型转换。今天,我就把书中的这个JavaScript数据类型自动转换的表抄给你们。让兄弟们作到心中有数。
函数
值 | 字符串 | 数字 | 布尔值 | 对象 |
---|---|---|---|---|
定义的值 | “undefined” | NaN | false | Error |
null | “null” | 0 | false | Error |
非空字符串 | As is | 字符串中的数字值或NaN | true | String对象 |
空字符串 | As is | 0 | false | String对象 |
0 | “0″ | As is | false | Number对象 |
NaN | “NaN” | As is | false | Number对象 |
无穷大 | “Infinity” | As is | true | Number对象 |
负无穷大 | “-Infinity” | As is | true | Number对象 |
其余全部数字 | 数字的字符串值 | As is | true | Number对象 |
True | “true” | 1 | As is | Boolean对象 |
false | “false” | 0 | As is | Boolean对象 |
对象 | toString() | valueOf()或toString()或NaN | true | As is |
简单说明一下,这个as is 的意思应该是——和它原来的同样。即,好比最后一行的对象,在被当作对象时,其应该没有变化,即仍是被看成自身的对象。
this
在Java中,基本类型之间的强制转换也不是这样的,好比,整数要转换成字符串,必须使用Integer.toString()静态方法或者String.valueOf()静态方法,把字符串转换为整数,必须使用Integer.valueOf()。
可见,不能把JavaScript中的类型转换看做为“强制类型转换”。
在JavaScript中,Double类型和Int类型都是看做为Number对象,所以不管是typeof 1仍是typeof 1.0,都是返回number。这样咱们能够不用去管是Int仍是Double类型,让JavaScript解释引擎内部去处理。
spa
注:Number、String函数是特殊的函数,在JS引擎中,他会自动判断是做为构造函数调用仍是普通调用,因此既可使用new关键字,也能够做为函数直接调用。
关于JS的参考手册,微软有一个CHM十分不错,指南、API参考都有,是Windows脚本技术,中文版,我在MSDN上下载的。而关于JS解释引擎的,我参考的是Netscape的Spidermonkey,如今由Mozilla组织维护
对象
得出是数字的累加
否则成字符串链接了
ip
下面的表格总结了javascript中的每一种转换,而且针对一种特定类型的值用于特定环境中给出了所执行的转换。ci
javascript自动数据类型转换表字符串
值 | 字符串 | 数字 | 布尔值 | 对象 |
---|---|---|---|---|
定义的值 | “undefined” | NaN | false | Error |
null | “null” | 0 | false | Error |
非空字符串 | 不变 | 字符串中的数字值或NaN | true | String对象 |
空字符串 | 不变 | 0 | false | String对象 |
0 | “0″ | 不变 | false | Number对象 |
NaN | “NaN” | 不变 | false | Number对象 |
无穷大 | “Infinity” | 不变 | true | Number对象 |
负无穷大 | “-Infinity” | 不变 | true | Number对象 |
其余全部数字 | 数字的字符串值 | 不变 | true | Number对象 |
True | “true” | 1 | 不变 | Boolean对象 |
false | “false” | 0 | 不变 | Boolean对象 |
对象 | toString() | valueOf()或toString()或NaN | true | 不变 |
写在这里以备查看。
这再记录点容易出问题的东东:
1. 虽然undefined和null值不一样,可是 ==运算符却将二者看做相等。看以下的表达式:
my.pro == null;//return: ture
若是属性my.pro并不存在,或者它存在可是值为null,那么这个比较表达式的值为true。因为null和undefined都表示缺乏值,因此这种相等性正是咱们想要的。可是若是必须去人这二者,可使用===运算符或者typeof运算符。
2.NaN
当一个算数运算(如用0来除0)产生了未定义的结果或错误时,就会返回另外一个特殊的javascript数值。这种状况下结果是一个非数字的特殊值,输出为NaN。它和任何值都不相等包括它自己,能够用isNaN()来检测这个值。