类型转换分为显示转换和隐式转换

参考http://www.cnblogs.com/mizzle/archive/2011/08/12/2135885.html

先事件显示的

通过手动进行类型转换,Javascript提供了以下转型函数:

转换为数值类型:Number(mix)、parseInt(string,radix)、parseFloat(string)
        转换为字符串类型:toString(radix)、String(mix)
        转换为布尔类型:Boolean(mix)

1、Number(mix)函数,可以将任意类型的参数mix转换为数值类型。其规则为:

 

1. 用于检测是否为非数值的函数:isNaN(mix)

isNaN()函数,经测试发现,该函数会尝试将参数值用Number()进行转换,如果结果为“非数值”则返回true,否则返回false。

不是number 是 parseInt 或parseFloat

范例

isNaN(1,1)

  console.log('parseInt 比 Number 多了个 如果第一个字符是数字,则继续解析直至字符串解析完毕或者遇到一个非数字符号为止')

实践了下

  1. console.log('')
  2. console.log('Number(mix)函数,可以将任意类型的参数mix转换为数值类型。其规则为:')
  3. console.log('如果是布尔值,true和false分别被转换为1和0')
  4. console.log('Number(true)')
  5. console.log(Number(true))
  6. console.log('Number(false)')
  7. console.log(Number(false))
  8. console.log('如果是数字值,返回本身')
  9. console.log(Number(1))
  10. console.log(Number(2))
  11. console.log(Number(0x8d))
  12. console.log('如果是null,返回0')
  13. console.log(Number(null))
  14. console.log('如果是undefined,返回NaN')
  15. console.log(Number(undefined))
  16. console.log('如果是字符串,则:1如果字符串中只包含数字,则将其转换为十进制(忽略前导0)')
  17. console.log(Number('01234'))
  18. console.log('如果是字符串,则:2如果字符串中包含有效的浮点格式,将其转换为浮点数值(忽略前导0)')
  19. console.log(Number('.1234'))
  20. console.log('如果是字符串,则:3如果是空字符串,将其转换为0')
  21. console.log(Number(''))
  22. console.log('如果是字符串,则:4如果字符串中包含非以上格式,则将其转换为NaN')
  23. console.log(Number('b.1234'))
  24. console.log('===========================')
  25. console.log('如果是对象,则调用对象的valueOf()方法,然后依据前面的规则转换返回的值。如果转换的结果是NaN,则调用对象的toString()方法,再次依照前面的规则转换返回的字符串值')
  26. console.log('===========================')
  27. console.log('测一下valueOf')
  28. console.log('Array')
  29. console.log([1,2,3,4,5,6].valueOf())
  30. console.log(typeof [1,2,3,4,5,6].valueOf())
  31. console.log((new Array(1,2,3,4,5)).valueOf())
  32. console.log([1,2,3,4,5,6].toString())
  33. console.log('Boolean')
  34. console.log(Boolean(true).valueOf())
  35. console.log(typeof Boolean(true).valueOf())
  36. console.log('Date')
  37. console.log((new Date()).getDate().valueOf())
  38. console.log('getTime')
  39. console.log((new Date()).getTime().valueOf())
  40. console.log('Function')
  41. function mytest(){var ss=1}
  42. console.log(mytest.valueOf())
  43. console.log("typeof:"+typeof mytest.valueOf())
  44. console.log('Number')
  45. console.log(Number(5).valueOf())
  46. console.log('parseInt(string, radix)函数,将字符串转换为整数类型的数值。它也有一定的规则')
  47. console.log('忽略字符串前面的空格,直至找到第一个非空字符')
  48. console.log(parseInt(' 1'))
  49. console.log('如果第一个字符不是数字符号或者负号,返回NaN')
  50. console.log(parseInt(' -'))
  51. console.log(parseInt(' -1'))
  52. console.log(parseInt(' d'))
  53. console.log('如果第一个字符是数字,则继续解析直至字符串解析完毕或者遇到一个非数字符号为止')
  54. console.log(parseInt(' 123ddddd'))
  55. console.log('如果上步解析的结果以0开头,则将其当作八进制来解析;如果以0x开头,则将其当作十六进制来解析')
  56. console.log(parseInt(' 077'))
  57. console.log(parseInt(' 077',8))
  58. console.log(parseInt(' 09'))
  59. console.log(parseInt(' 0xa'))
  60. console.log('parseInt 和 Number 会忽略所有前导0 除了16禁止0xa 另外js应该没有8进制文本表示')
  61. console.log(parseInt(' xa'))
  62. console.log(parseInt(' 0xa'))
  63. console.log(parseInt(' 066'))
  64. console.log(Number(' 066'))
  65. console.log('parseInt 比 Number 多了个 如果第一个字符是数字,则继续解析直至字符串解析完毕或者遇到一个非数字符号为止')
  66. function a(){var ss=1}
  67. console.log(a.toString())
  68. console.log(typeof a.toString())
  69. console.log('==')
  70. console.log([1,2].valueOf().toString())
  71. console.log(Number([1,2]))
  72. console.log(parseInt([1,2]))
  73. console.log(Number('9a'))
  74. console.log(parseInt('9a'))
  75. console.log('==================================')
  76. console.log('逻辑操作符(!、&&、||)')
  77. console.log('逻辑与(&&)操作符,如果一个操作值不是布尔值时,遵循以下规则进行转换')
  78. console.log('如果第一个操作数经Boolean()转换后为true,则返回第二个操作值,否则返回第一个值(不是Boolean()转换后的值)')
  79. console.log('0&&1'+0&&1)
  80. console.log('1&&0'+1&&0)
  81. console.log('如果有一个操作值为null,返回null')
  82. console.log('null&&1:'+(null&&1))
  83. console.log('如果有一个操作值为NaN,返回NaN')
  84. console.log('NaN&&1:'+(NaN&&1))
  85. console.log('如果有一个操作值为undefined,返回undefined')
  86. console.log('undefined&&1:'+(undefined&&1))
  87. console.log('加好的优先级 要比&& 高')
  88. console.log('逻辑或(||)操作符,如果一个操作值不是布尔值,遵循以下规则')
  89. console.log('如果第一个操作值经Boolean()转换后为false,则返回第二个操作值,否则返回第一个操作值(不是Boolean()转换后的值)')
  90.  
  91. console.log('0||1:'+(0||1))
  92. console.log('1||0:'+(1||0))
  93. console.log('对于undefined、null和NaN的处理规则与逻辑与(&&)相反')
  94. console.log('null||1:'+(null||1))
  95. console.log('如果有一个操作值为NaN,返回第二个')
  96. console.log('NaN||1:'+(NaN||1))
  97. console.log('如果有一个操作值为undefined,返回第二个')
  98. console.log('undefined||1:'+(undefined||1))

js 类型转换学习的更多相关文章

  1. js再学习笔记

    #js再学习笔记 ##基本 1.js严格区分大小写   2.js末尾的分号可加,也可不加   3.六种数据类型(使用typeof来检验数据的类型) `typeof` - undefined: `var ...

  2. js面向对象学习 - 对象概念及创建对象

    原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数 ...

  3. js数组学习整理

    原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); // ...

  4. js入门学习~ 运动应用小例

    要实现的效果如下: 鼠标移入各个小方块,实现对应的效果(变宽,变高,移入透明,移出恢复)~~ (且各运动相互之前不干扰)  主要是练习多个物体的运动框架~~ --------------------- ...

  5. JS入门学习,写一个时钟~

    <!-- 耽搁了几天,于是又继续回到JS的学习了~~ 各种头大,加油吧... --> <!doctype html><html><head> <t ...

  6. 【干货分享】Node.js 中文学习资料和教程导航

    这篇文章来自 Github 上的一位开发者收集整理的 Node.js 中文学习资料和教程导航.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念,它的目标是帮助程 ...

  7. js类型转换的坑

    JS的灵活 说好听是说JS灵活, 说不好听就是JS的坑太多, JS类型转换就是一个大坑, JS的类型包括了原始类型的[null, undefined, String ,Number, Boolean] ...

  8. JS数组学习笔记

    原文:JS数组学习笔记 最近在备课数组,发现很多ES5的方法平时很少用到.细节比较多,自己做了大量例子和整理,希望对大家了解JavaScript中的Array有所帮助. 概念 数组是值的有序集合.每个 ...

  9. js 正则学习小记之匹配字符串

    原文:js 正则学习小记之匹配字符串 今天看了第5章几个例子,有点收获,记录下来当作回顾也当作分享. 关于匹配字符串问题,有很多种类型,今天讨论 js 代码里的字符串匹配.(因为我想学完之后写个语法高 ...

随机推荐

  1. Web jquery表格组件 JQGrid 的使用 - 全部代码

    系列索引 Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引 Web jquery表格组件 JQGrid 的使用 - 4.JQGrid参数.ColModel API.事件 ...

  2. 英文写作——冠词的使用(Use 0f Articles)

    1.使用'a','an','the'和不使用冠词的基本规则: <1>泛指,不可数名词不能有任何冠词 <2>泛指,可数,复数名词前不能有冠词 <3>泛指,可数,单数名 ...

  3. [NHibernate]组件之依赖对象

    目录 写在前面 文档与系列文章 组件之依赖对象 一个例子 总结 写在前面 周一至周四一直在成都出差,也一直没有更新博客了,一回到家第一件事就是扒一扒最近博客园更新的文章,然后把想看的收藏了,大概有20 ...

  4. AndroidStudio使用笔记

    声明: 正式放弃Eclipse,投奔AndoidStudio大军,有些东西要从头摸索,特发此帖记录Android Studio的使用方法.本帖永久更新,不定时记录本人使用过程中的经验积累,给自己留一份 ...

  5. 配置SQL server远程连接(局域网)

    具体步骤: 1) 2) 3) 4) 5) 6) 7) 最后为了防火墙有影响,直接把防火关了,测试连接通过在来设置防火墙.

  6. HTML页面去缓存

    在页面中写入: 两种写法: 1. <META HTTP-EQUIV="nocache" CONTENT="no-cache"> 2. <HEA ...

  7. PHP打印测试,PHP调试技巧

    第一步: 在 php.ini 中,将 display_errors 设置为 On: 第二步: 在 框架的 开始处,添加如下代码: <?php if (isset($_GET['debug'])) ...

  8. 【Eclipse】总结自己在工作中经常使用到的Eclipse快捷键

    一些我觉得比较有用的快捷键,仅作参考. 1.alt + shift + c :更改方法签名. 2.三次鼠标左键单击: 选中一整行. 3.alt + shift + d/x: 再按t : 运行junit ...

  9. redis集群之REDIS CLUSTER

    redis集群之REDIS CLUSTER 时间 2016-04-11 17:05:00  NoSQL_博客园 原文  http://www.cnblogs.com/zhanchenjin/p/537 ...

  10. libcpmt.lib 与 msvcprt.lib

    https://msdn.microsoft.com/en-us/library/2kzt1wy3(VS.80).aspx