javascript中的类型转换与测试
来源:互联网 发布:ubuntu 安装samba 编辑:程序博客网 时间:2024/05/17 22:19
一、默认类型
二、转换为布尔值
在火狐下测试:
var Benjamin = " ";console.log(Benjamin.length);//4console.log(Benjamin == false);//trueconsole.log(Boolean(Benjamin) == false);//false
为何下面两句的结果不同?
console.log(Benjamin == false); 中" "转换为0,则 0 == false 返回true
Boolean(Benjamin) 返回true
三、转换为数值类型
a.字符串只包含数字转换为十进制数(忽略前导0)
b.字符串包含有效浮点格式,转换为对应浮点数(忽略前导0)
c.包含有效十六进制格式,转换为十进制数
d.字符串为空(不包含任何字符,但是可以全空格),转换为0
e.字符串除a.b.c.d之外的格式转换为NaN
Booleantrue:1,false:0Objecta.调用对象的valueOf(),按前面规则转换,如果返回的结果为NaN,则调用toString(),再次按照前面的规则转换
console.log(Number(""));//0console.log(Number(" "));//0console.log(Number("1.1"));//1.1console.log(Number("01.1"));//1.1console.log(Number("1.1.1"));//NaNconsole.log(Number("0xf"));//15console.log(Number("0x0xf"));//NaNconsole.log(Number("123aaaa"));//NaNconsole.log(Number("0123aaa"));//NaNconsole.log(Number("0123"));//123
Object.prototype.valueOf ( )
当调用 valueOf 方法,采用如下步骤:
1. 令 O 为以 this 作为参数调用 ToObject 的结果 .
2. 如果 O 是以一个宿主对象 (15.2.2.1) 为参数调用 Object 构造器的结果,则
1. 返回 O 或传递给构造器的原来的宿主对象 . 返回的具体结果是由实现定
义的 .
3. 返回 O.
Object.prototype.toString ( )
当调用 toString 方法,采用如下步骤:
1. 如果 this 的值是 undefined, 返回 "[object Undefined]".
148
2. 如果 this 的值是 null, 返回 "[object Null]".
3. 令 O 为以 this 作为参数调用 ToObject 的结果 .
4. 令 class 为 O 的 [[Class]] 内部属性的值 .
5. 返回三个字符串 "[object ", class, and "]" 连起来的字符串
四、转换为整数和浮点数
ToInteger:
a.对输入参数调用 ToNumber。
b.如果 Result(a) 是 NaN,返回 +0。
c.如果 Result(a) 是 +0 ,-0,+∞,或 -∞,返回 Result(a)。
d.计算 sign(Result(a)) * floor(abs(Result(a)))。
e.返回 Result(d)。
看看两个方法:
parseInt()和parseFloat()
console.log(parseInt(""));//NaNconsole.log(parseInt(" "));//NaNconsole.log(parseInt("1.1"));//1console.log(parseInt("01.1"));//1console.log(parseInt("1.1.1"));//1console.log(parseInt("0xf"));//15console.log(parseInt("0x0xf"));//0console.log(parseInt("123aaaa"));//123console.log(parseInt("0123aaa"));//123console.log(parseInt("0123"));//123
parseFloat():
console.log(parseFloat(""));//NaNconsole.log(parseFloat(" "));//NaNconsole.log(parseFloat("1.1"));//1.1console.log(parseFloat("01.1"));//1.1console.log(parseFloat("1.1.1"));//1.1console.log(parseFloat("0xf"));//0console.log(parseFloat("0x0xf"));//0console.log(parseFloat("123aaaa"));//123console.log(parseFloat("0123aaa"));//123console.log(parseFloat("0123"));//123
五、转换为字符串
对数值类型应用toString():
ToString 运算符将数字 m 转换为字符串格式的给出如下所示:
1. 如果 m 是 NaN,返回字符串 "NaN"。
2. 如果 m 是 +0 或 -0,返回字符串 "0"。
3. 如果 m 小于零,返回连接 "-" 和 ToString(-m) 的字符串。
4. 如果 m 无限大,返回字符串 "Infinity"。
5. 否则,令 n, k, 和 s 是整数,使得 k ≥ 1, 10k-1 ≤ s < 10k,s × 10n-k 的数字值是 m,
且 k 足够小。要注意的是,k 是 s 在十进制表示中的数字的个数。s 不被 10 整
除,且s 的至少要求的有效数字位数不一定要被这些标准唯一确定。
65
6. 如果 k ≤ n ≤ 21,返回由 k 个 s 在十进制表示中的数字组成的字符串(有序的,开
头没有零),后面跟随字符 '0' 的 n-k 次出现。
7. 如果 0 < n ≤ 21,返回由 s 在十进制表示中的、最多 n 个有效数字组成的字符串,
后面跟随一个小数点 '. ',再后面是余下的 k-n 个 s 在十进制表示中的数字。
8. 如果 -6 < n ≤ 0,返回由字符 '0' 组成的字符串,后面跟随一个小数点 '. ',再后面
是字符 '0' 的 -n 次出现,再往后是 k 个 s 在十进制表示中的数字。
9. 否则,如果 k = 1,返回由单个数字 s 组成的字符串,后面跟随小写字母 'e',根据
n-1 是正或负,再后面是一个加号 '+' 或减号 '-' ,再往后是整数 abs(n-1) 的十进
制表示(没有前置的零)。
10. 返回由 s 在十进制表示中的、最多的有效数字组成的字符串,后面跟随一个小数点
'. ',再后面是余下的是 k-1 个 s 在十进制表示中的数字,再往后是小写字母 'e',
根据n-1 是正或负,再后面是一个加号 '+ ' 或减号 '-' ,再往后是整数 abs(n-1) 的
十进制表示(没有前置的零)。
2. 调用 ToString(Result(1))。
3. 返回 Result(2)。
console.log(String(NaN));//"NaN"console.log(String(0));//"0"console.log(String(true));//"true"console.log(String(null));//"null"console.log(String(undefined));//"undefined"console.log(String(-5));//"-5"console.log(String({"name":"Benjamin"}));//[object Object]console.log(String(["name","bb","cc"]));//name,bb,cc
六、转换为对象
ToObject
类型
值
Undefined
抛出 TypeError 异常
Null
抛出 TypeError 异常
Number
创建一个新的Number对象,其 [[PrimitiveValue]]属性被设为该布尔值的值。
String
创建一个新的String对象,其 [[PrimitiveValue]]属性被设为该布尔值的值。
Boolean
创建一个新的Boolean 对象,其 [[PrimitiveValue]]属性被设为该布尔值的值。
Object
结果是输入的参数(不转换
var Benjamin;console.log(Object(undefined));//Object {}console.log(Object(Benjamin));//Object {}console.log(Object(null));//Object {}console.log(Object({"name":"Benjamin"}));//Object { name="Benjamin"}console.log(Object(123));//Number {}console.log(Object("abc"));//String { 0="a", 1="b", 2="c"}console.log(Object(true));//Boolean {}
- javascript中的类型转换与测试
- JavaScript中的类型转换
- Javascript中的类型转换
- javascript中的类型转换
- javascript中的类型转换
- JavaScript中的类型转换
- javascript中的类型转换
- JavaScript中的类型转换
- JavaScript中的类型转换
- 【JavaScript中的类型转换】
- javascript中的强制类型转换
- JavaScript 中的强制类型转换
- JavaScript 变量类型与类型转换
- JavaScript中的类型与变量
- 深入理解Javascript中的自动类型转换
- javascript中的隐式类型转换
- JavaScript中的隐式类型转换
- JavaScript中的隐式类型转换
- wondows中的cmd中切换盘符和目录的命令
- 30天自制操作系统笔记(七八)
- 学习<决定>的体会
- 编译 Spring-framework的经验分享
- Top 10 Algorithms for Coding Interview
- javascript中的类型转换与测试
- 在Ubuntu上安装arm-linux-gcc-4.6.1
- 大一的我也希望未来
- QQ浮动窗口
- 今后几年的规划或者说理想吧
- Google Protocol Buffers 编码(Encoding)
- 蒙哥马利(Montgomery)算法简介
- static在C和C++中的区别与总结
- qt做文件浏览器