JavaScript中的数据类型转换
本文中提到的“原始值”指的是undefined,null,Boolean,string和number。
本文中的对象是native对象,宿主对象(浏览器定义的对象)按照各自的算法转换。
JavaScript中共有六种数据类型,Undefined、Null、Boolean、Number、String和Object。
关于类型转换,JavaScript很有趣的一点是,它会根据他期待的数据类型自动进行类型转换。也就是说,即便你不给他他想要的,他也会自己动手把你给的变成他想要的。
原始值的转换都很简单,和我们想象的几乎一致,其中复杂的是对象到原始值的转换,所以要单独进行讨论。
3.8.3中介绍了对象转换为不同类型的过程,不管要转换成什么类型,都是通过调用JavaScript会使用对象的两个转换方法——valueOf( )和toString( )来获得原始值,获取结果如下表:

只不过转换为不同类型获取原始值规则不同。
- 将对象转换为字符串的规则:
- 如果他有toString( ),调用,如果他返回一个原始值,将其转换为为字符串(如果不是字符串)并返回。
- 如果他返回的不是原始值,或他没有toString( ), 调用valueOf( ),如果返回一个原始值,将其转换为字符串(如果不是字符串)并返回 。
- 否则,抛出一个类型错误异常。
- 将对象转换为数字的规则:
- 先尝试用valueOf( ),如果返回一个原始值,再将其转换为数值并返回。
- 如果返回的不是原始值或他没有valueOf( ),再尝试toString( ),如果返回一个原始值,将其转换为数值并返回。
- 否则,抛出一个类型错误异常。
- 当它执行"!"操作符和if语句时,它会期待一个布尔值,如果你给他的不是一个布尔值,他会后台调用Boolean( )将其操作数转换为布尔值。
- 当它执行"-"或一元"+"操作符时,它会期待一或两个数值,如果你给他的不是数值,他会后台调用Number( )将其操作数转换为数值。
- 当它执行 二元"+","=="("!="),和关系操作符时,会根据自身的期待进行类型转换。
- +date 返回表示日期的毫秒数(date是日期对象。 )
- if(-[1,]) 在非IE6/7/8中的值为true,在IE6/7/8中为false。
JavaScript中的数据类型转换的更多相关文章
- 第一百二十七节,JavaScript,JSON数据类型转换,数据转换成字符串,字符串转换成数据
第一百二十七节,JavaScript,JSON数据类型转换,数据转换成字符串,字符串转换成数据 学习要点: 1.JSON语法 2.解析和序列化 前两章我们探讨了XML的结构化数据,但开发人员还是觉得这 ...
- 谈 JavaScript 中的强制类型转换 (2. 应用篇)
这一部分内容是承接上一篇的, 建议先阅读谈 JavaScript 中的强制类型转换 (1. 基础篇) 前两章讨论了基本数据类型和基本包装类型的关系, 以及两个在类型转换中十分重要的方法: valueO ...
- 详细理解javascript中的强制类型转换
将值从一种类型转换为另一种类型通常称为类型转换,这是显式的情况:隐式的情况称为强制类型转换,JavaScript 中的强制类型转换总是返回标量基本类型值,如字符串.数字和布尔值. 如何理解: 类型转换 ...
- 浅谈 JavaScript 中常用数据及其类型转换
在 JavaScript 中有一些 value 会经常碰到: [] (空数组).{} (空对象).'' (空字符串).undefined.null.0.NaN.Infinite 也会经常碰到数据类型转 ...
- 谈 JavaScript 中的强制类型转换 (1. 基础篇)
1. 从基本包装类型讲起 讨论基本包装类型的前提是了解基本数据类型(也可以称为原始类型, 简单数据类型等).然后通过基本数据类型调用方法的行为, 引出基本包装类型的概念和作用. 1.1 基本数据类型 ...
- C语言中强制数据类型转换(转)
原文地址不详 字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128-127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围是0-255(有些 ...
- javascript中 json数据的解析与序列化
首先明确一下概念: json格式数据本质上就是字符串: js对象:JavaScript 中的几乎所有事务都是对象:字符串.数字.数组.日期.函数,等等. json数据的解析: 就是把后端传来的json ...
- Java中的数据类型转换
先来看一个题: Java类Demo中存在方法func0.func1.func2.func3和func4,请问该方法中,哪些是不合法的定义?( ) public class Demo{ float fu ...
- matlab中图片数据类型转换uint8与double
matlab中处理图像像素点数据: img1=double(imread('lenna.bmp')); matlab中imshow图片,要先转换成uint8: subplot(1,2,1),imsho ...
随机推荐
- js微博发布框的实现
观察了微博发布框, 1.发现他的剩余文字是动态改变的, 2.且文字为零时 发布框颜色为暗色 3.文字不符合标准时提交不通过 整理了一下思路 js会主要用到的方法 1.onclick() //点击发布时 ...
- 作业三: 代码规范、代码复审、PSP
分) 对于是否需要有代码规范,请考虑下列论点并反驳/支持: 这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 我是个艺术家,手艺人,我有自己的规范和原则. 规范不能 ...
- 到底应该选择那种Linux.NET的部署方式?
当前部署Linux.NET环境的方式可谓是五花八门,既有传统的源码编译的方式.又有各式各样的一键安装脚本.还有绿色包安装方式,而随着Mono官方的新站上线,更增加了采用RPM包的部署方式.那对于一名L ...
- [SDK2.2]Windows Azure Storage (15) 使用WCF服务,将本地图片上传至Azure Storage (上) 服务器端代码
<Windows Azure Platform 系列文章目录> 这几天工作上的内容,把项目文件和源代码拿出来给大家分享下. 源代码下载:Part1 Part2 Part3 我们在写WEB服 ...
- RabbitMQ Exchange & Queue Design Trade-off
In previous post, I mentioned the discussion on StackOverflow regarding designing exchanges. Usually ...
- 《Entity Framework 6 Recipes》中文翻译系列 (23) -----第五章 加载实体和导航属性之预先加载与Find()方法
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 5-2 预先加载关联实体 问题 你想在一次数据交互中加载一个实体和与它相关联实体. ...
- 单独使用jdbc编程问题总结(一)
在学习Mybatis之前,我们先来回顾JDBC编程的相关知识.在此基础上深入的学习Mybatis框架.如有错误,敬请指正. (一)首先我们既然要使用jdbc,当然是要操作数据库了.创建一个名为:myb ...
- UITest 单元测试常用的断言
XCTFail(format…) 生成一个失败的测试: XCTFail(@"Fail"); XCTAssertNil(a1, format...) 为空判断, a1 为空时通过,反 ...
- 《FaceBook效应》——读后总结
这本书讲述了facebook从如何创建.到风靡全球,并结合facebook的网络效应讲述为什么facebook可以做到社交龙头.读这本书的时候,也可以看看<社交网络>这部电影. faceb ...
- 使用Hexo搭建专属Blog
喜欢折腾的自己最开始在博客园有仿写几篇Blog,虽也可以自己改变风格,可是到底不是独立的一块儿地方,要知道独立的才是自己的;有属于自己独立的域名和Blog,真真是一件很爽的存在.在各种大牛的分享下在G ...