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. 大学二三事——那些事(1)

    虽然另外一个队友早上忽然拉肚子没有办法去了,我个阿骚还是决定出发. 本来以为早点过去签到可以躲过李导,没想到在她上班的路上被她撞见.   坐在早上那班发往周至县的客车的时候,天气忽好忽坏.   从周至 ...

  2. js、jquery的入口函数及其执行与图片加载的先后顺序

    js的入口函数写法: window.onload = function() { }; 如果文件中有多个window.onload入口函数,则只会执行最后一个,之前的入口函数没有用. jquery的入口 ...

  3. Oracle中sys和system用户的区别

    1.数据库的启动需要以SYSDBA/SYSOPER身份登录. 2.如果在同一主机上使用IPC连接到数据库使用操作系统授权,登录任何一个用户都可以拥有as sysdba和as sysoper. 3.sy ...

  4. openstack私有云布署实践【14.2 登录页dashboard-controller(办公网环境)】

    这一小节基本配置相同,但留意以下紫色部份的配置,当初为了管理方便,我们让办公网openstack的dashboard的登录桥接了科兴的dashboard,由此统一dashboard界面的登录地址   ...

  5. 解决Fileupload 在IE 10 中需要双击的问题

    方法来自于:https://code.google.com/p/primefaces/issues/detail?id=5355 the oncomplete event is working for ...

  6. html5权威指南:表格元素

    第十一章:表格元素                                                                                           ...

  7. PostgreSQL AS不忽略大小写

    select p.name as Name from person p; as后的Name会显示为name,若想不忽略大小写,请把Name加上双引号 select p.name as "Na ...

  8. 《高性能Javascript》读书笔记-2

    第二章 数据存取 字面量: 代表自身 不存特定位置   :字符串 数字 bool 对象 array 函数  正则表达 本地变量: var 数组: 存储在js数组对象内部,以数字做索引 对象成员 存储在 ...

  9. mysql表设计

    model表 记录网站模块:如视频,音频,调查,01发布内容时.可以指定发布到哪个模块下02可以统计每个模块的访问量设计表注意点01主键不要用id (全部使用 当前表名+id 如modelid)02n ...

  10. 一步一步学EF系列2【最简单的一个实例】

    整个文章我都会用最简单,最容易让人理解的方式给大家分享和共同学习.(由于live Writer不靠谱 又得补发一篇) 一.安装 Install-Package EntityFramework 二.简单 ...