javascript基础(二)类型转换
原文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基础(二)类型转换的更多相关文章
- 2、JavaScript 基础二 (从零学习JavaScript)
11.强制转换 强制转换主要指使用Number.String和Boolean三个构造函数,手动将各种类型的值,转换成数字.字符串或者布尔值. 1>Number强制转换 参数为原始类型值的转换规 ...
- Javascript基础二(程序的三大结构)
程序的三大结构: 顺序结构,选择结构,循环结构 程序的单分支结构-if语句: 当条件判断为真true时,执行花括号内的语句,如果条件为假false,跳过花括号内的语句 if(条 ...
- javascript基础二数据类型
1.数据类型 javascript中的基本数据类型有4中,undefined,number,string,boolean 1.1 typeof关键字 typeof关键字可以获取一个变量的的类型.先举个 ...
- 刘强1109 JavaScript基础二(分支与循环结构)
[if-else结构] 1.结构的写法: if(判断条件){ 条件为true时,执行if{} } else{ 条件为false时,执行else{} } 2.注意事项: ① else{}语句块,可以根据 ...
- JavaScript 基础(二) - 创建 function 对象的方法, String对象, Array对象
创建 function 对象的两种方法: 方式一(推荐) function func1(){ alert(123); return 8 } var ret = func1() alert(ret) 方 ...
- JavaScript 基础二
JavaScript 事件处理程序就是一组语句,在事件(如点击鼠标或移动鼠标等)发生时执行 ●当事件之间互相影响时,需要有个先后顺序,这时我们声明一个Bool值来做约束 浏览对象: window 对象 ...
- JavaScript基础二
1.7 常用内置对象 所谓内置对象就是ECMAScript提供出来的一些对象,我们知道对象都是有相应的属性和方法 1.7.1 数组Array 1.数组的创建方式 字面量方式创建(推荐大家使用这种方式, ...
- JavaScript 基础(二)数组
字符串, JavaScript 字符串就是用'' 和""括起来的字符表示. 字符字面量, \n 换行, \t 制表, \b 退格, \r 回车, \f 进纸, \\ 斜杠,\' 单 ...
- 1、JavaScript 基础一 (从零学习JavaScript)
1:定义:javascript是一种弱类型.动态类型.解释型的脚本语言. 弱类型:类型检查不严格,偏向于容忍隐式类型转换. 强类型:类型检查严格,偏向于不容忍隐式类型转换. 动态类型:运行的时候执行类 ...
- 基本类型和引用类型的值 [重温JavaScript基础(一)]
前言: JavaScript 的变量与其他语言的变量有很大区别.JavaScript 变量松散类型的本质,决定了它只是在特定时间用于保存特定值的一个名字而已.由于不存在定义某个变量必须要保存何种数据类 ...
随机推荐
- CentOS7配置OpenCV2.4.13
以管理员身份运行su root输入密码 安装依赖包 yum install gcc gcc-c++ gtk2-devel gimp-devel gimp-devel-tools gimp-help-b ...
- udp接收
char receive_buffer[500] = {0}; std::vector<std::string> mysplit(std::string str,std::string p ...
- Python网络编程学习_Day10
一.进程与线程 1.区别 进程:一个程序要运行时所需要的所有资源的集合,进程是资源的集合. 一个进程至少需要一个线程,这个线程称为主线程 一个进程里面可以有多个线程 两个进程之间的数据是完全独立,不能 ...
- 关于spring autowrie的5种方式
spring自动注入有5中方式,分别是: byName:根据自动注入类中的对象名字,会到配置文件中找相关id或者name的bean,如果找不到则不会匹配,如果找到多个bean,则会报错. byType ...
- Oracle 收集统计数据
查看最新用户表统计信息 select owner,table_name,last_analyzed from dba_tables where owner not like '%SYS%' order ...
- 关于 Unchecked cast from Iterator to Iterator String 提示
遇到个这个提示:Unchecked cast from Iterator to Iterator String Iterator<String> keys = data.keys(); 修 ...
- IOS Android支持中文与本地文件的读取写入
转自http://www.xuanyusong.com/archives/1069 和http://www.benmutou.com/archives/2094 前几天有个朋友问我为什么在IOS平台中 ...
- Conversion to Dalvik format failed with error 1(android)
1.如果不修改android sdk版本,则使用project clean 命令作用于某工程即可. (该处理方式只是在高版本中兼容了低版本工程,未真正意义上的升级) 2.如果修改android sdk ...
- NYOJ-47 过河问题(贪心)
过河问题 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边.如果不借助手电筒的话,大家是无论如何也不敢过桥去的 ...
- Linux kernel Vhost-net 和 Virtio-net代码详解
场景 Host上运行qemu kvm虚拟机,其中虚拟机的网卡类型为virtio-net,而Host上virtio-net backend使用vhost-net 数据包进入虚拟机代码分析 首先看vhos ...