原文http://pij.robinqu.me/

类型转换

当期望使用一个布尔值的时候,可以提供任意类型值,JavaScript将根据需要自行转换类型。类型转换可以分为隐式转换和显式转换。

显式转换

  转换为数值类型:Number(mix)、parseInt(string,radix)、parseFloat(string)

  转换为字符串类型:toString(radix)、String(mix)

  转换为布尔类型:Boolean(mix)

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

如果是布尔值,true和false分别被转换为1和0
Number(true); //=> 1
如果是数字值,返回本身。
Number(5); //=> 5
如果是null,返回0.
Number(null); //=>0
如果是undefined,返回NaN。
Number(undefined); //=> NaN

如果是字符串,遵循以下规则:

如果字符串中只包含数字,则将其转换为十进制(忽略前导0)

Number("00001"); //=> 1

如果字符串中包含有效的浮点格式,将其转换为浮点数值(忽略前导0)

Number("1.234"); //=> 1.234

如果是空字符串,将其转换为0

Number(""); //=> 0

如果字符串中包含非以上格式,则将其转换为NaN

如果是对象,则调用对象的valueOf()方法,然后依据前面的规则转换返回的值。如果转换的结果是NaN,则调用对象的toString() 方法,再次依照前面的规则转换返回的字符串值。

下表列出了对象的valueOf()的返回值:

对象    返回值
Array 数组的元素被转换为字符串,这些字符串由逗号分隔,连接在一起。其操作 与 Array.toString 和 Array.join 方法相同。
Boolean Boolean 值。
Date 存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数 UTC。
Function 函数本身。
Number 数字值。
Object 对象本身。这是默认情况。
String 字符串值。

parseInt(string, radix)函数,将字符串转换为整数类型的数值。它也有一定的规则:

  忽略字符串前面的空格,直至找到第一个非空字符

  如果第一个字符不是数字符号或者负号,返回NaN

  如果第一个字符是数字,则继续解析直至字符串解析完毕或者遇到一个非数字符号为止

  如果上步解析的结果以0开头,则将其当作八进制来解析;如果以0x开头,则将其当作十六进制来解析

  如果指定radix参数,则以radix为基数进行解析


 parseInt("12", 10); // => 12
parseInt("12", 16); // => 18
parseInt("1E", 10); // => 1
parseInt("E", 10); // => NaN

parseFloat(string)函数,将字符串转换为浮点数类型的数值。

它的规则与parseInt基本相同,但也有点区别:字符串中第一个小数点符号是有效的,另外parseFloat会忽略所有前导0,如果字符串包 含一个可解析为整数的数,则返回整数值而不是浮点数值。

parseFloat("1.222.2") // => 1.222
parseFloat("1.0") // => 1

toString(radix)方法。除undefined和null之外的所有类型的值都具有toString()方法,其 作用是返回对象的字符串表示。

对象    操作
Array 将 Array 的元素转换为字符串。结果字符串由逗号分隔,且连接起来。
Boolean 如果 Boolean 值是 true,则返回 “true”。否则,返 回 “false”。
Date 返回日期的文字表示法。
Error 返回一个包含相关错误信息的字符串。
Function 返回如下格式的字符串,其中 functionname 是被调 用 toString 方法函数的名称:function functionname( ) { [native code] }
Number 返回数字的文字表示。
String 返回 String 对象的值。
默认 返回 “[object objectname]”,其中 objectname 是 对象类型的名称。
String(mix)函数,将任何类型的值转换为字符串,其规则为:

如果有toString()方法,则调用该方法(不传递radix参数)并返回结果

如果是null,返回”null”

如果是undefined,返回”undefined”

toString使用示例
var then = new Date()
then.toString();
String使用示例
var then = new Date() String(then);
Boolean(mix)函数,将任何类型的值转换为布尔值。

以下值会被转换为false:false、””、0、NaN、null、undefined,其余任何值都会被转换为true。

隐式转换

考虑一下情况:

null == undefined

undefined == null

2 == "2"

"2"== 2

NaN != NaN

在某些情况下,即使我们不提供显示转换,JavaScript也会进行自动类型转换,主要情况有:

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

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

javascript基础(二)类型转换的更多相关文章

  1. 2、JavaScript 基础二 (从零学习JavaScript)

     11.强制转换 强制转换主要指使用Number.String和Boolean三个构造函数,手动将各种类型的值,转换成数字.字符串或者布尔值. 1>Number强制转换 参数为原始类型值的转换规 ...

  2. Javascript基础二(程序的三大结构)

    程序的三大结构: 顺序结构,选择结构,循环结构 程序的单分支结构-if语句:       当条件判断为真true时,执行花括号内的语句,如果条件为假false,跳过花括号内的语句       if(条 ...

  3. javascript基础二数据类型

    1.数据类型 javascript中的基本数据类型有4中,undefined,number,string,boolean 1.1 typeof关键字 typeof关键字可以获取一个变量的的类型.先举个 ...

  4. 刘强1109 JavaScript基础二(分支与循环结构)

    [if-else结构] 1.结构的写法: if(判断条件){ 条件为true时,执行if{} } else{ 条件为false时,执行else{} } 2.注意事项: ① else{}语句块,可以根据 ...

  5. JavaScript 基础(二) - 创建 function 对象的方法, String对象, Array对象

    创建 function 对象的两种方法: 方式一(推荐) function func1(){ alert(123); return 8 } var ret = func1() alert(ret) 方 ...

  6. JavaScript 基础二

    JavaScript 事件处理程序就是一组语句,在事件(如点击鼠标或移动鼠标等)发生时执行 ●当事件之间互相影响时,需要有个先后顺序,这时我们声明一个Bool值来做约束 浏览对象: window 对象 ...

  7. JavaScript基础二

    1.7 常用内置对象 所谓内置对象就是ECMAScript提供出来的一些对象,我们知道对象都是有相应的属性和方法 1.7.1 数组Array 1.数组的创建方式 字面量方式创建(推荐大家使用这种方式, ...

  8. JavaScript 基础(二)数组

    字符串, JavaScript 字符串就是用'' 和""括起来的字符表示. 字符字面量, \n 换行, \t 制表, \b 退格, \r 回车, \f 进纸, \\ 斜杠,\' 单 ...

  9. 1、JavaScript 基础一 (从零学习JavaScript)

    1:定义:javascript是一种弱类型.动态类型.解释型的脚本语言. 弱类型:类型检查不严格,偏向于容忍隐式类型转换. 强类型:类型检查严格,偏向于不容忍隐式类型转换. 动态类型:运行的时候执行类 ...

  10. 基本类型和引用类型的值 [重温JavaScript基础(一)]

    前言: JavaScript 的变量与其他语言的变量有很大区别.JavaScript 变量松散类型的本质,决定了它只是在特定时间用于保存特定值的一个名字而已.由于不存在定义某个变量必须要保存何种数据类 ...

随机推荐

  1. android 蓝牙连接与通讯(Bluetooth)

    最近做了一个小项目,关于蓝牙的一个智能硬件.其中涉及到了蓝牙模块的操作.特记下蓝牙模块的操作过程.只记录下关于蓝牙部分的操作,具体业务逻辑不涉及其中.重点是记录下蓝牙的扫描.链接.通讯. 在使用蓝牙模 ...

  2. shell-正则表达式

    证则表达式:在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容.许多程序设计 ...

  3. chrome ipc 网摘

    http://my.oschina.net/myspaceNUAA/blog/81632?p=1 http://lihuan623.blog.163.com/blog/static/138595845 ...

  4. ubuntu16.04 samba 配置

    samba是一个很有用的在Linux和Windows之间共享文件的服务器程序,在工作的时候一直在使用,不过都是别人配置好的环境,自已一直没有配置过Samba服务器,今天尝试着自己配置的一次遇到了很多的 ...

  5. 有关C语言学习的调查

    有关C语言学习的调查 1.Q:你是怎么学习C语言的?(作业,实验,教材,其他),与你的高超技能相比,C语言的学习有什么经验和教训? A:之间在暑假的之后自己有买了一本C PRIME PLUS 来看基本 ...

  6. 问题记录2:TypeError: write() argument must be str, not bytes

    今天试了下用requests模块的get()方法来下载图片,写入文件的时候不能写入二进制,然后将打开方式改成二进制的就好了. 原因是,f.content的存储方式是二进制,而文件正常打开默认是字符串的 ...

  7. attr 和 prop 区别

    jquery 中 attr 和 prop 都表示 "属性",同样是属性为啥还要弄两个! attr 适用于自定义属性 如 定义一个懒加载用的src 栗子 <img class= ...

  8. jenkins 杀死衍生进程

    解决方法-1: 在execute shell输入框中加入BUILD_ID=DONTKILLME,即可防止jenkins衍生进程 解决方法-2: 修改/etc/sysconfig/jenkins配置,在 ...

  9. centos6.5 安装zabbix

    实验说明: 操作系统: CentOS6.5 64位 Web环境: Apache Mysql PHP zabbix版本: LTS 2.2.10 Linux服务器IP: 10.0.0.2 Linux客户端 ...

  10. jmeter命令行运行-分布式测试

    上一篇文章我们说到了jmeter命令行运行但是是单节点下的, jmeter底层用java开发,耗内存.cpu,如果项目要求大并发去压测服务端的话,jmeter单节点难以完成大并发的请求,这时就需要对j ...