JS数据类型转换方法主要有三种:

         转换函数、强制类型转换、利用js变量弱类型转换。

一.转换函数

         parseInt()和parseFloat()两个转换函数。

         前者把值转换成整数,后者把值转换成浮点数。

         只有对String类型调用这些方法,这两个函数才能正确运行;对其他类型返回的都是NaN(Not a Number)。

         parseInt()判断:在判断字符串是否是数字值前,parseInt()和parseFloat()都会仔细分析该字符串。

         parseInt()方法首先查看位置0处的 字符,判断它是否是个有效数字;

         如果不是,该方法将返回NaN,不再继续执行其他操作。

         但如果该字符是有效数字,该方法将查看位置1处的字符,进行同样的 测试。

         这一过程将持续到发现非有效数字的字符为止,此时parseInt()将把该字符之前的字符串转换成数字。

        例:

         parseInt("1234blue");   //   1234 
         parseInt("0xA");   //   10 
         parseInt("22.5");   //   22 
         parseInt("blue");   //   NaN

        扩展:

        parseInt()方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。

        可以这样调用parseInt()方法: 
          parseInt("10",   2);   //   2 
          parseInt("10",   8);   //   8 
          parseInt("10",   10);   // 10 

       parseFloat()判断:

         从位置0开始查看每个字符,直到找到第一个非有效的字符为止,然后把该字 符之前的字符串转换成数字。

         不过,对于这个方法来说,第一个出现的小数点是有效字符。如果有两个小数点,第二个小数点将被看作无效的, parseFloat()方法会把这个小数点之前的字符串转换成数字。 这意味着字符串 "22.34.5 "将被解析成22.34。 

         使用parseFloat()方法的另一不同之处在于,字符串必须以十进制形式表示浮点数,而不能用八进制形式或十六进制形式。

        该方法会忽略前导0,所以八进制数0908将被解析为908。对于十六进制数0xA,该方法将返回NaN,因为在浮点数中,x不是有效字符。此外,parseFloat()也没有基模式。

         parseFloat()例子:  

         parseFloat("1234blue");   //1234.0 
         parseFloat("0xA");   //NaN 
         parseFloat("22.5");   //22.5 
         parseFloat("22.34.5");   //22.34 
         parseFloat("0908");   //908 
         parseFloat("blue");   //NaN

 二.强制类型转换

       Boolean(value)——把给定的值转换成Boolean型; 
       Number(value)——把给定的值转换成数字(可以是整数或浮点数); 
       String(value)——把给定的值转换成字符串。 
       用这三个函数之一转换值,将创建一个新值,存放由原始值直接转换成的值。这会造成意想不到的后果。 
       当要转换的值是至少有一个字符的字符串、非0数字或对象时,Boolean()函数将返回true。如果该值是空字符串、数字0、undefined或null,它将返回false。

       Boolean型的强制类型转换:

        Boolean("");   //false   –   empty   string 
        Boolean("hi");   //true   –   non-empty   string 
        Boolean(100);   //true   –   non-zero   number 
        Boolean(null);   //false   -   null 
        Boolean(0);   //false   -   zero 
        Boolean(new   Object());   //true   –   object

        Number()的强制类型转换

        Number(false)   0 
        Number(true)   1 
        Number(undefined)   NaN 
        Number(null)   0 
        Number( "5.5 ")   5.5 
        Number( "56 ")   56 
        Number( "5.6.7 ")   NaN 
        Number(new   Object())   NaN 
        Number(100)   100  

       String()的强制类型转换

        它可把任何值转换成字符串。要执行这种强制类型转换,只需要调用作为参数传递进来的值的 toString()方法,即把1转换成   "1 ",把true转换成 "true ",把false转换成 "false ",依此类推。

        强制转换成字符串和调用toString()方法的唯一不同之处在于,对null或undefined值强制类型转换可以生成字符串而不引发错误:

        var   s1   =   String(null);   //"null" 
        var   oNull   =   null; 
        var   s2   =   oNull.toString();   //won’t   work,   causes   an   error

三.利用JS弱类型转换

       <script> 
         var   str= '012.345 '; 
         var   x   =   str-0; 
         x   =   x*1;

         alert(x); //12.345

        </script>

《JS权威指南学习总结--3.8类型转换》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. child_process小解

    js是一种单进程单线程的语言,但现行的cpu都是多核的,为了解决单进程单线程对多核使用不足的问题,child_process应运而生,理想情况下每个进程各自利用一个内核. 主要有四种方法来创建子进程, ...

  2. nginx构建https

    1.生成证书#openssl genrsa -des3 -out server.key 1024#openssl req -new -key server.key -out server.csr#op ...

  3. 没事抽空学——c语言指针操作基础概念

    指针基础 理解指针的最佳方法是画图,学习使用基本指针,不要产生空指针. 存储控件分配 存储控件分配是指在内存预留空间的过程.就像一个虚拟菜谱一样,指针对应菜名,其所指的内存空间中的数据对应实际的菜. ...

  4. redis5--set的操作

    Set集合类型(1)介绍redis的set是string类型的无序集合set元素最大可以包含(2的32次方-1)个元素关于set集合类型除了基本的添加删除操作,其它有用的操作还包含集合的取并集(uni ...

  5. OC 调用JS 代码 处理HTML5 实战

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; ...

  6. javaWEB总结(15):jsp指令_page指令

    jsp指令 jsp指令是为jsp引擎设计的.他们并不直接产生任何可见输出,而只是告诉引擎如何处理jsp页面的其余部分. 目前定义了page,include和taglib这三种指令. page指令 (1 ...

  7. linux 移除svn文件夹

    find . -name .svn -type d -exec rm -fr {} \;

  8. JVM 几个重要的参数

    <本文提供的设置仅仅是在高压力, 多CPU, 高内存环境下设置>  最近对JVM的参数重新看了下, 把应用的JVM参数调整了下.  几个重要的参数 -server -Xmx3g -Xms3 ...

  9. CodeForces 697B Barnicle 模拟

    强行模拟 纪念一下…… #include<stdio.h> #include<iostream> #include<algorithm> #include<m ...

  10. AS3.0杂记——Dictionary、Object与Array

    来源:http://blog.csdn.net/m_leonwang/article/details/8811829 Object.Array与Dictionary都是关联数组,就是用“键”来索引存储 ...