javaScript 基本类型之间转换

在Java中,基本类型之间的强制转换也不是这样的,好比,整数要转换成字符串,必须使用Integer.toString()静态方法或者String.valueOf()静态方法,把字符串转换为整数,必须使用Integer.valueOf()。
可见,不能把JavaScript中的类型转换看做为“强制类型转换”。
在JavaScript中,Double类型和Int类型都是看做为Number对象,所以不管是typeof 1仍是typeof 1.0,都是返回number。这样咱们能够不用去管是Int仍是Double类型,让JavaScript解释引擎内部去处理。
javascript

  • 若是要把Number转换成String,可使用Number的toString()方法,(象(1).toString()括号必须或者 1 .toString()空格必须,不然会编译出错,若是是变量则无需),或者调用String()函数,这两种方法都会自动调用解释引擎内部的 NumberToString(),或者根据进制调用其它函数,基本相似。
  • 若是要把String转换成Number,可使用Number()函数,他会自动判断String中是整数仍是浮点数,而后内部使用相应的数据 类型,另外可使用全局函数parseInt()和parseFloat(),他们根据你的要求进行转换。一样的,他们在解释引擎内部机制上是使用了 StringToNumber,StringToInt等等内部的函数。
  • 而若是是Double转换成Int,必须使用Math.floor()函数(截尾取整)或者Math.round()(四舍五入)
  • Int转换成Double,无须考虑任何问题,直接把Int当成Double进行运算

注:Number、String函数是特殊的函数,在JS引擎中,他会自动判断是做为构造函数调用仍是普通调用,因此既可使用new关键字,也能够做为函数直接调用。
关于JS的参考手册,微软有一个CHM十分不错,指南、API参考都有,是Windows脚本技术,中文版,我在MSDN上下载的。而关于JS解释引擎的,我参考的是Netscape的Spidermonkey,如今由Mozilla组织维护。


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
java

< this.all.length;i++){
   vTotal+=Number(this.all[i].Value);
   
  }


 得出是数字的累加
否则成字符串链接了

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

引用
javaScript支持自动类型转换:


Java代码   收藏代码
  1. <script>  
  2.   
  3.     var a = "3.145";  
  4.     var b = a - 2;//将a的类型转换成数字;  
  5.     var c = a + 2;//将a的类型转换成字符串;  
  6.     alert (b + "\n" + c);  
  7.   
  8. </script>  


引用
JavaScript还提供几个支持强制类型转换的函数。


  • toString():将布尔值、数字等转换成字符串。
  • parseInt():将字符串、布尔值等转换成整数。
  • parseFloat():将字符串、布尔值等转换成浮点数。
  • eval():将字符串表达式转换成数字值。例如,语句total=eval("432.1*10")的结果是total=4321即将数值4321赋予total变量。



Java代码   收藏代码
  1. <script>  
  2.   
  3.     var a = "3.145";  
  4.     var b = a + 2;  
  5.     var c = parseFloat(a) + 2;  
  6.     alert (b + "\n" + c);  
  7.   
  8. </script>  



引用
各类类型向数字转换的结果以下:


  • undefined值:转换成NaN。
  • null值:转换成0.
  • 布尔值:值为true,转换成1;值为false,转换成0.
  • 字符串值:若是字符串是数字形式,转换成数字,不然转换成NaN。
  • 其余对象:转换成NaN.



引用
各类类型向字符串转换的结果以下:
  • undefined值:转换成"undefined"。
  • null值:转换成"null".
  • 布尔值:值为true,转换成"true";值为false,转换成"false".
  • 数字型值:NaN或数字型变量的完整字符串。
  • 其余对象:若是该对象的toString()方法存在,则返回toString方法的返回值,不然返回undefined.



引用
各类类型向布尔型转换的结果以下:
  • undefined值:转换成"false。
  • null值:转换成false。
  • 字符串值:若是字符串为空字符串,返回false;不然返回true。
  • 数字型值:若是数字为0或NaN,返回false。;不然返回true。
  • 其余对象:老是返回true;

在Java中,基本类型之间的强制转换也不是这样的,好比,整数要转换成字符串,必须使用Integer.toString()静态方法或者String.valueOf()静态方法,把字符串转换为整数,必须使用Integer.valueOf()。
可见,不能把JavaScript中的类型转换看做为“强制类型转换”。
在JavaScript中,Double类型和Int类型都是看做为Number对象,所以不管是typeof 1仍是typeof 1.0,都是返回number。这样咱们能够不用去管是Int仍是Double类型,让JavaScript解释引擎内部去处理。
spa

  • 若是要把Number转换成String,可使用Number的toString()方法,(象(1).toString()括号必须或者 1 .toString()空格必须,不然会编译出错,若是是变量则无需),或者调用String()函数,这两种方法都会自动调用解释引擎内部的 NumberToString(),或者根据进制调用其它函数,基本相似。
  • 若是要把String转换成Number,可使用Number()函数,他会自动判断String中是整数仍是浮点数,而后内部使用相应的数据 类型,另外可使用全局函数parseInt()和parseFloat(),他们根据你的要求进行转换。一样的,他们在解释引擎内部机制上是使用了 StringToNumber,StringToInt等等内部的函数。
  • 而若是是Double转换成Int,必须使用Math.floor()函数(截尾取整)或者Math.round()(四舍五入)
  • Int转换成Double,无须考虑任何问题,直接把Int当成Double进行运算

注:Number、String函数是特殊的函数,在JS引擎中,他会自动判断是做为构造函数调用仍是普通调用,因此既可使用new关键字,也能够做为函数直接调用。
关于JS的参考手册,微软有一个CHM十分不错,指南、API参考都有,是Windows脚本技术,中文版,我在MSDN上下载的。而关于JS解释引擎的,我参考的是Netscape的Spidermonkey,如今由Mozilla组织维护
 
对象

< this.all.length;i++){
   vTotal+=Number(this.all[i].Value);
   
  }


 得出是数字的累加
否则成字符串链接了


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()来检测这个值。

相关文章
相关标签/搜索