JavaScript深入理解之强制类型转换
2017-01-06 10:55
316 查看
JavaScript深入理解之强制类型转换
* 在我们写代码中,常常会遇见需要进行类型转换的时候,有时是对函数参数进行类型转换,有时是对函数返回值进行类型转换,下面来聊一聊JS里面的类型转换,JS里面的类型转换分为两种,一种是显示强制类型转换,一种是隐式强制类型转换。 *let a = 9; let b = a + ''; // 隐式强制类型转换 let c = String(a); // 显示强制类型转换
* 将非字符串(数字、数组、JSON格式)转换为字符串—–toString() *
let a = 9.99 * 10000000000 * 10000000000000000000000; let aa = a.toString(); console.dir(aa); // => '9.99e+32' let b = [1, 2, 3]; let bb = b.toString(); console.dir(bb); // => '1,2,3' let c = { a: 1, b: 2 } let cc = JSON.stringify(c); console.dir(cc); // => '{"a":1, "b":2}'
* 将非数字类转换为数字—– Number() *
let a = '42'; let aa = Number(a); console.dir(aa); // =>42 Number(true); // 1 Number(false); // 0 Number(undefined); // NaN Number(null); // 0
* 将非布尔值转换为布尔值—–Boolean() *
Boolean(something); 当something为 undefined、null、false、+0、-0、NaN、''六个值时返回false, 其它时候返回true
* 将字符串转换为数字—- +或- *
let c = "123"; let d = +c; console.dir(d) // => 123 let a = -c; // -会反转数值符号位 console.dir(a) // => -123 let e = - -c; console.dir(e); // => 123
* 解析数字字符串—– parseInt()、parseFloat() *
let a = '123fd'; let aa = parseInt(a); console.log(aa); // => 123 let b = '123.4fd'; let bb = parseInt(b); let bbb = parseFloat(b); console.dir(bb); // => 123 console.dir(bbb); // => 123.4
* 其它情况 *
'123' + 5 // => '1235' '123' - 1 // => 122 [1,2] + 4 // => '1,24' [1,2] - 4 // => NaN [1] - 4 // => -3 [1,2] + [4,5] // => '1,24,5'
* && 和 || *
在JavaScript语言中,&&和||返回两个操作数其中一个的值,在C和PHP中返回的是true或false
42 || 'abc' // 42 42 && 'abc' // 'abc' null || 'abc' // 'abc' null && 'abc' // null
||和&&首先会对第一个操作数进行判断,如果不是布尔值,先进行强制类型转换为布尔值
对于||,如果第一个操作数转换的布尔值为true,返回第一个操作数,否则返回第二个操作符
对于&&,如果第一个操作数转换的布尔值为true,返回第二个操作数,否则返回第一个操作符
* == 和 === *
对于==和===的区别,常见的解释是“==检查值是否相等,===检查值和类型是否相等”,个人感觉这个解释比较表面,但能说明==和===的区别,深层次的解释是“==允许在相等比较中进行强制类型转换,而===不允许在相等比较中进行类型转换”,在进行开发时,不建议使用==,如果需要进行比较和类型转换,建议先转换后在进行比较。
相关文章推荐
- AJAX入门之深入理解JavaScript中的函数
- 深入理解JavaScript中的函数
- 深入理解JavaScript中的事件
- 深入理解JavaScript的变量作用域
- 深入理解JavaScript中的this关键字
- AJAX入门之深入理解JavaScript中的函数
- 深入理解JavaScript Hijacking原理
- 深入理解JavaScript中的函数
- 深入理解JavaScript系列(17):面向对象编程之概论详细介绍
- JavaScript 闭包深入理解(closure)
- AJAX入门之深入理解JavaScript中的函数
- 深入理解JavaScript中的函数
- AJAX入门之深入理解JavaScript中的函数
- JavaScript中undefined的深入理解
- AJAX入门之深入理解JavaScript中的函数
- AJAX入门之深入理解JavaScript中的函数
- AJAX入门之深入理解JavaScript中的函数
- AJAX入门之深入理解JavaScript中的函数
- AJAX入门之深入理解JavaScript中的函数
- AJAX入门之深入理解JavaScript中的函数