JavaScript类型转换方法及需要注意的问题小结(挺全面)

 更新时间:2010年11月11日 14:33:38   作者:  
JavaScript类型转换方法及需要注意的问题,在js中经常需要对数据类型的转换操作,需要的朋友可以参考下。
一、类型转换的方法和应该注意的问题:
1.
转换为布尔型:
1)用两次非运算(!):
!!5 ==> true
2)用布尔型的构造函数:
new Boolean(5) == > true
值转换为布尔类型为false
0
+0-0NaN""(空字符串),undefined,null
除上面的值其他值在转换以后为true,需要特别提到的是:
"0",new Object(),function(){}
2.
转换为字符串类型:
1)加上空字符串""
123 +
 "" = "123"
2)用字符串构造函数:
new String(123) = "123".
需要特别注意的转化:
+0 ==> "0"
-0 ==> "0"
-Infinity ==>"-Infinity"
+Infinity ==>"+Infinity"
NaN ==> "NaN"
undefined ==> "undefined"
null ==> "null"
new Object() ==> "[object Object]"
function(){} ==> "function(){}"
3.
转换为数值型:
1 取正(+), 减零 -0), 乘一,(*1),除以一(/1),取负(-,这个得到相反的值)。
+"123" = 123
+true = 1
2)用构造函数Number();
new Number("123") = 123
几个需要特别注意的转化:
""
(空字符串) ==> 0
"010" ==> 10
"0x10"(16
进制) ==> 16
"-010" ==> -10
"-0x10" ==> NaN
undefined ==> NaN
null ==> 0
true ==> 1
false ==> 0
new Object() ==> NaN
new function(){} ==> NaN


二、隐式类型转换:
(1)
二元加法运算(+):如果两个操作数中有一个是String类型,将把两个操作数转换为String类型再相加。
如果两个操作数中没有字符串类型,那么将把两个操作数转换为数值类型再做运算。
举例:
"123"+123 = "123123";
123+123 = 246
true + true = 2
true + undefined = NaN
(因为undefined转换为数值为NaN,所有结果为NaN)
true + null = 1 (null
转换为数字是0)
"123" + null = "123null" (
包含字符串将转化为字符串相加)
"123" + undefined = "123undefined"
undefined同样适用)
1 + 2 + "123" = "3123" (1+2
是首先按照数值型计算的)
(2)
二元减乘除运算(-*/):因为只有数值类型才有 - * / 运算,所以会先将两个操作数转换为数值型再做运算。
"123"-123 = 0
(3)
一元取正(+),取负运算符(-):取正或者取负都是针对数值型的运算,所以会将操作数转换为数值型再做运算。
+"123" = 123
-"123" = -123
+"123e" = NaN
+"123f" = NaN
+"123e-2" = 1.23 
(4)
一元非(!)运算符:非运算符需要将操作数转化为布尔类型。
!"123" = false
!!"123" = true
!123 = false
!!123 = true
(5)
逻辑运算符(&&)和(||):
&&或者||的两侧被判断的时候会被转为布尔类型进行判断,
但是我在测试的时候却发现一个有趣的事情。
&&
运算符:如果有一个项为false,那么表达式返回false,如果所有的项都不为false,那么表达式返回最右边一个项的原始值。
举例:
123 && 23 && 45
返回 45,而不是我们想象中的true.
所以如果有 123 && 23 == true 那么应该是false
至于if(123 && 23) 认为是true那应该是把23转换为布尔类型了。
||
运算符:
|| 测试的结果也和我想象的不一样,|| 返回第一个转换以后不为false的值,如果都为false,它将返回最后一个为false的值(未进行类型转化之前的值)。
举例: 
123 || 23
返回 123,而不是想象中的true.
false || null
返回null 而不是想象中的false
三、类型转换函数
1.
parseFloat转换为浮点数:
字符解析函数获取每一个字符直到遇到不属于数值的字符,然后返回它已获取的数值.
几个需要特别注意的:
""
(空字符串) ==> NaN
"123e-2" == > 1.23 (
科学计算法是可以识别的)
"010" ==> 10 (8
进制不能识别)
"0x10"==> 0 (16
进制不识别)
"-010" ==> -10 
null,undefined,true,false,new Object(),function(){} ==> NaN
2.parseInt
转换为有符号整数:
parseFloat相似,但是他会把小数位舍掉(注意不是四舍五入,是完全舍弃,跟Math.floor处理方式一样),而且他可以识别八进制和16进制表示方式:
123e-2 == > 1
"123e-2" ==> 123
"010" == > 8 
"0x10" ==> 16
"-010" == > -8 
"-0x10" ==> -16
null,undefined,true,false,new Object(),function(){},-Infinity +Infinity NaN ==> NaN
3.
三个取整函数的区别
1Math.ceil():“天花板,很形象吧?就是取大于等于参数的最小整数。
8.7 == > 9
-8.7==> -8
2Math.floor():"地板",取小于等于参数的最小整数。
8.7 ==> 8
-8.7 ==> -9
3Math.round():"四舍五入"取整数。

相关文章

  • 原生态js,鼠标按下后,经过了那些单元格的简单实例

    原生态js,鼠标按下后,经过了那些单元格的简单实例

    下面小编就为大家带来一篇原生态js,鼠标按下后,经过了那些单元格的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • 前端开发之JS生成32位随机数的方法举例

    前端开发之JS生成32位随机数的方法举例

    最近有个需求,是需要生成32位长度的随机数,下面这篇文章主要给大家介绍了关于前端开发之JS生成32位随机数的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • JS获得浏览器版本和操作系统版本的例子

    JS获得浏览器版本和操作系统版本的例子

    通过分析各类浏览器的userAgent信息,不难得出分辨各类浏览器及其版本的正则表达式。而且,对浏览器类型的判断和版本的判断完全可以合为一体地进行。
    2014-05-05
  • JavaScript  函数语法详解

    JavaScript 函数语法详解

    本文结合前面发布的文章,详细介绍了javascript的函数语法,非常的详尽,非常的实用,这里推荐给大家,是篇不可多得的文章
    2021-09-09
  • 详解maxlength属性在textarea里奇怪的表现

    详解maxlength属性在textarea里奇怪的表现

    这篇文章主要介绍了maxlength属性在textarea里奇怪的表现的相关资料,需要的朋友可以参考下
    2015-12-12
  • 使用脚本控制网页Table的显示隐藏(全代码)_AX

    使用脚本控制网页Table的显示隐藏(全代码)_AX

    使用脚本控制网页Table的显示隐藏(全代码)_AX...
    2006-12-12
  • 一篇文章详解JS的四种异步解决方案

    一篇文章详解JS的四种异步解决方案

    异步在JS中是常用的,下面这篇文章主要给大家介绍了关于JS四种异步解决方案的相关资料,文中通过代码介绍的非常详细,对大家学习或者使用js具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-06-06
  • 前端本地文件获取excel表格内容并渲染在页面的方法

    前端本地文件获取excel表格内容并渲染在页面的方法

    这篇文章主要介绍了前端本地文件获取excel表格内容并渲染在页面的方法,主要利用SheetJS插件用于处理Excel文件,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-03-03
  • 如何将一维度数组转换成三维数组结构

    如何将一维度数组转换成三维数组结构

    在开发过程中,可能会遇到需要将一维数组转换为多维数组的情况,以满足特定数据结构的需求,文章介绍了如何将后端返回的一维列表数据通过编程方法转换成三维数组结构,以适应特定的UI展示需求,通过循环遍历和数据重组的方式,可以有效地实现数组结构的转换
    2024-09-09
  • 前端碎片localStorage的清除方法

    前端碎片localStorage的清除方法

    这篇文章主要介绍了前端localStorage清除方法的相关资料,localStorage是前端存储数据的工具,数据不会因为页面刷新而消失,但测试后需要清除数据,清除localStorage的方法包括手动清除、编程方式清除、使用浏览器提供的清除功能和使用第三方库,需要的朋友可以参考下
    2024-11-11

最新评论