原文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. maven原理

    http://www.cnblogs.com/onlys/archive/2011/01/04/1925466.html 基本原理Maven的基本原理很简单,采用远程仓库和本地仓库以及一个类似buil ...

  2. awk-模式匹配

    使用awk作为文本处理工具,正则表达式是少不了的. 要掌握这个工具的正则表达式使用.其实,我们不必单独去学习它的正则表达式.正则表达式就像一门程序语言,有自己语法规则已经表示意思. 对于不同工具,其实 ...

  3. Beyond Compare V3.2.3 Beta 中文版

    软件名称: Beyond Compare V3.2.3 Beta 中文版 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win7 / Vista / Win2003 / WinXP 软件大小 ...

  4. 关于ios原声嵌入web页面的问题

    当在一个界面中既有原生又有web的时候,如果想让上下整体滑动的话,我们怎么确定web的高度呢,下面分享一下我的心得 首先在webView的代理方法中我们可以获取到加载完整个web页面的高度 - (vo ...

  5. Python基础(十)-模块

    模块初识 一般把不同功能代码放到不同py文件,一个py文件就是一个模块 三种模块库: 1.Python标准库 2.第三方库 3.自定义库 导入模块:import 库名 (Python解释器只认识执行文 ...

  6. cmake+qt+qtcreator的配置,解决Q_OBJECT的问题

    1.如果在编译qt项目的时候,一般头文件里都有Q_OBJECT,但是用cmake来编译的时候,就会报错,那么怎么解决呢? 解决的办法就是要在cmake里面写好配置 命令,再编译的时候,就不会报错了,写 ...

  7. wcf测试工具

    WCF测试工具-WcfStorm WCF测试工具-WcfStorm  http://www.wcfstorm.com/wcf/home.aspx WcfStorm is a dead-simple, ...

  8. HSDFS fs命令

    fs命令 -help [cmd]  //显示命令的帮助信息 -ls(r) <path>  //显示当前目录下所有文件 -du(s) <path>  //显示目录中所有文件大小 ...

  9. workerman简单例子

    workerman下载地址 http://www.workerman.net/ html <!DOCTYPE html> <html> <head> <tit ...

  10. location修改的时候报错解决办法

    location修改的时候直接保存record,或者转换成DbObject都会报错,这样准换之后就好了if(key.equals("location")&&valu ...