JavaScript深入理解之强制类型转换

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为 undefinednullfalse、+0、-0NaN''六个值时返回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,返回第二个操作数,否则返回第一个操作符

* == 和 === *
对于==和===的区别,常见的解释是“==检查值是否相等,===检查值和类型是否相等”,个人感觉这个解释比较表面,但能说明==和===的区别,深层次的解释是“==允许在相等比较中进行强制类型转换,而===不允许在相等比较中进行类型转换”,在进行开发时,不建议使用==,如果需要进行比较和类型转换,建议先转换后在进行比较。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值