原文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. 移动APP脚本录制

    1.安装补丁--LR_03105_patch4----mobile app(http/html) 2.录制软件和移动设备同处同一环境(160wifi连接移动设备),创建wifi热点 3.创建脚本-协议 ...

  2. Top 20 JavaScript Projects of 2017

    https://www.youtube.com/watch?v=SUMn8y3pi28 20. AngularJS 1 19. Passport 18. Pug 17. Socket.IO 16. J ...

  3. html5的navigator调用手机震动

    navigator.vibrate(s) 或 navigator.webkitVibrate(s),不过该属性只在安卓系统有效.

  4. Intellj idea 安装JUnit

    1.file-Settings-Plugins-Browse repositories-HTTP Proxy Settings将No proxy改成Auto-detect proxy settings ...

  5. CentOS 添加本地yum源

    1 创建保存RPM包的路径: mkdir -p /share/CentOS/7/local/x86_64/RPMS 2 安装createrepo工具 yum install createrepo 3 ...

  6. Linux中一些简单命令(一)

    1.查看当前用户:who 2.显示当前目录:pwd 3.查看当前服务器的时间:date 4.查看日历:cal+year; 例如:cal 2016 5.计算器:bc  退出计算器:quit或者ctrl+ ...

  7. 闹心的python编码

    说起编码,真是十分忧伤.每次听课都是绕了半天把自己搞糊涂.今天特意来整理一下思路. What 编码!? 基本概念很简单.首先,我们从一段信息即消息说起,消息以人类可以理解.易懂的表示存在.我打算将这种 ...

  8. ASP.NET中重复表格列合并的实现方法(转自脚本之家)

    这几天做一个项目有用到表格显示数据的地方,客户要求重复的数据列需要合并,就总结了一下.NET控件GridView 和 Repeater 关于重复数据合并的方法. 这是合并之前的效果: 合并之后的效果图 ...

  9. Ubuntu下Git的使用之创建版本库

    创建版本库 什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以 ...

  10. Fiddler的安装设置

    一.安装设置Fiddler2  下载完成后安装,安装完成后打开 如下图设置Fiddler 代理: 二.设置手机代理 快捷键win+r打开运行窗口à输入:cmdà确定 在界面上输入:ipconfig,查 ...