首页 > 其他 > 详细

隐式数据类型转换

时间:2021-04-06 23:32:28      阅读:39      评论:0      收藏:0      [点我收藏+]

首先来看段代码:

   var num = 1 + true;
   console.log(num) /* 1+1 = 2 */

   var num = 1 + false;
   console.log(num) /* 1+0 = 1 */

   var num = 1 + NaN;
   console.log(num) /* 1+NaN = NaN */

   var num = 1 + "aaa";
   console.log(num) /* "1"+"aaa" = "aaa" */

   var num = "aaa" + false;
   console.log(num) /* "aaa"+"false" = "aaafalse" */

   var num = "aaa" + NaN;
   console.log(num) /* "aaa"+"NaN" = "aaaNaN" */

我们可以发现:

  任何数字在与非字符串类型的值进行运算(相加、相减、相乘、相除、模除)时,会先将不是 number 类型的值转换为 number 类型再进行计算。

  字符串类型的值在和其他值进行相加运算时,会将先将不是 string 类型的值转换为 string 类型再进行拼接,可以利用这一点对某变量进行类型转换:

   var num = 10;
   num = num + ""
   console.log(num) /* "10"+"" = "10" */
   console.log(typeof num) /* string */

这就是数据类型的隐式转换!当然,既然是运算,那么必然遵守运算法则

   var res = 10 + 15 + "25";
   console.log(res) /* "2525" */

   var res = "80" + 20 + 10;
   console.log(res) /* "802010" */

如上代码:遵循加法运算法则,从左到右依次计算:

              10+15 = 25 => 25+“25” = “2525” 。

              “80”+20 =“8020” => “8020”+10 = “802010”

需要注意的是:当字符串与任意类型的变量进行减法、乘法、除法、模除运算时,会先将所有变量转换为 number 再进行计算。

   var res = "100" - Object;
   console.log(res) /* 100 - NaN = NaN */

   var res = "100" - true;
   console.log(res) /* 100 - 1 = 99 */

   var res = "100" - "10";
   console.log(res) /* 100 - 10 = 90 */

   var res = "100" - NaN;
   console.log(res) /* 100 - NaN = NaN */

   var res = "100" - null;
   console.log(res) /* 100 - 0 = 100 */

   var res = "100" - undefined;
   console.log(res) /* 100 - NaN = NaN */

   var res = "was" - "sss";
   console.log(res) /* NaN - NaN = NaN */

利用这一特性:

    var res = "100000" - "0";
    console.log(res) /* 100000 - 0 = 100000 */

可以通过 -、*、/ 、% 将纯数字的字符串隐式转换为Number

隐式数据类型转换

原文:https://www.cnblogs.com/a-coder-L/p/14624101.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!