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

2017-01-07 11:23:01来源:CSDN作者:zza000000人点击

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);        // =>42Number(true);           // 1Number(false);          // 0Number(undefined);      // NaNNumber(null);           // 0

* 将非布尔值转换为布尔值—–Boolean() *

Boolean(something);当something为 undefinednullfalse、+0、-0NaN''六个值时返回false,其它时候返回true

* 将字符串转换为数字—- +或- *

let c = "123";let d = +c;console.dir(d)  // => 123let a = -c;     // -会反转数值符号位console.dir(a)  // => -123let e = - -c;console.dir(e); // => 123

* 解析数字字符串—– parseInt()、parseFloat() *

let a = '123fd';let aa = parseInt(a);console.log(aa);        // => 123let b = '123.4fd';let bb = parseInt(b);   let bbb = parseFloat(b);console.dir(bb);        // => 123console.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,返回第二个操作数,否则返回第一个操作符

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

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台