作家
登录

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

作者: 来源:www.28hudong.com 2013-03-30 01:11:45 阅读 我要评论

一、类型转换的方法和应该注意的问题:1.转换为布尔型:(1)用两次非运算(!):!!5 ==> true(2)用布尔型的构造函数:new Boolean(5) == > true值转换为布尔类型为false:0,+0,-0,NaN,""(空字符串),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" ==> NaNundefined ==> NaNnull ==> 0true ==> 1false ==> 0new Object() ==> NaNnew function(){} ==> NaN 二、隐式类型转换:(1)二元加法运算(+):如果两个操作数中有一个是String类型,将把两个操作数转换为String类型再相加。如果两个操作数中没有字符串类型,那么将把两个操作数转换为数值类型再做运算。举例:"123"+123 = "123123";123+123 = 246true + true = 2true + 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(){} ==> NaN2.parseInt转换为有符号整数:跟parseFloat相似,但是他会把小数位舍掉(注意不是四舍五入,是完全舍弃,跟Math.floor处理方式一样),而且他可以识别八进制和16进制表示方式:123e-2 == > 1"123e-2" ==> 123"010" == > 8 "0x10" ==> 16"-010" == > -8 "-0x10" ==> -16null,undefined,true,false,new Object(),function(){},-Infinity +Infinity NaN ==> NaN3.三个取整函数的区别:(1)Math.ceil():“天花板”,很形象吧?就是取大于等于参数的最小整数。8.7 == > 9-8.7==> -8(2)Math.floor():"地板",取小于等于参数的最小整数。8.7 ==> 8-8.7 ==> -9(3)Math.round():"四舍五入"取整数。

  推荐阅读

  JS维吉尼亚密码算法实现代码

复制代码 代码如下:var Vigenere = { _strCpr: 'abcdefghijklmnopqrstuvwxyz_12345 67890.ABCDEFGHIJKLMNOPQRSTUVWXYZ',//可以将此字符串的顺序打乱点,或者添加更多字符 _strKey: function(strK,str){//生成密钥字>>>详细阅读


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

地址:http://www.17bianji.com/kaifa2/JS/25440.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)