常见js计算题之数据类型转换

1.如下:

var a;
var b = a * 0;
if ( b == b) {
     console. log( b * 2 + "2" - 0 + 4);
} else {
      console. log(! b * 2 + "2" - 0 + 4);
}

分析如下:

   先看结果:26

   首先,a是undefined, b=a*0   把a转成number类型即NaN,所以b是NaN, 所以b==b即NaN==NaN =>false,走else;

  !NaN 为true, !b*2 即1*2,最后2+“2”-0  而 “22”碰到"-"号 就转成数字,再和4相加得26。如果没有减0 就是“224”了。

2.

parseInt( '100W') //100
parseInt( 'W100') //NaN
parseInt( 11, 2) //3
parseInt( "11", 2) //3

总结几个特殊常见的类型转换和比较:

一.JS中常见数据类型转换 

 1. 其他数据类型转为number

    (1) Number()返回一个数字或NaN。   typeof NaN  :number类型

 1)字符串转成数字number (全部是数字) 如果有字母或非法 都是NaN。
 2)布尔型转成数字number     true 1 false  0。
 3)  null     转换成number   Number(null)-- 0;
 4)  undefined转换成number   Number(undefined)— NaN      
 5)数组   机制是先调用toString()方法,转成字符串 再转成数字 所以结果只能是一个数字(只有一个数字的数组)或者 NaN。
 6)对象   NaN

(2) parseInt() 转换成整数 字符串转换成整数返回值是整数或NaN
            和Number()的区别碰到非数字 后面不再进行,但是前面数字部分正常输出。
含有小数的字符串 也只保留整数部分。

      注意:

    parseInt(string,radix) : string要解析的字符串,radix介于2-36之间,如果省略或为0,则为10进制解析;如果2,即前面那个参数为2进制表示的;“0x”或者“0X”为16基数。如果这个参数小于2或者大于36,则为NaN。

      (3) parseFloat():将字符串类型转换成整数或小数  或NaN

var str =”.1.1.1”
console.log(parseFloat(str));  为0.1
 隐式转换: 在进行运算或者部分转化的过程中,js自动进行的数据转换。
    (4)  isNaN(): 返回值是一个布尔值:true,false;
   true: 代表确实不是一个数字
   false: 是一个数字
null—0; 
true—1; 
false—0; 
undefined–NaN 
2.其他类型转换成字符串: toString() /String()
          var num1=true;
console.log(num1);
         console.log(String(num1));
         console.log(num1.toString());
3、其他类型转换成布尔类型
Boolean(); 返回值true  false
除了以下5种,其余都是真
  1. 、NaN、’‘、null、undefined 都为false。
!取反 非,先将符号后面的内容调用布尔方法,对这个返回值再进行取反    true false
!! 双重取反 可以看成是直接调用Boolean()方法的结果       


二.特殊类型比较
    “==” 在js中是比较的意思,返回一个布尔类型的值,相等就是true 不想等就是false 
                              NaN == NaN        // false
null == undefined   //true
                                 null=== undefined  //false

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]中提到了关于对象转换为数字的过程,对象转换为数字会经历对象->字符串->数字的过程。在这个过程中,会调用对象的toString()方法来将对象转换为字符串。所以在题目中的代码中,对象a通过重写toString()方法,使得每次调用a.toString()都会返回递增的数字。这样,在if语句中,a会被转换为数字进行比较。 引用\[2\]中提到了==的转换规则。对于==运算符,会先判断两边的类型是否相同,如果相同则比较值的大小。如果类型不同,则会进行类型转换。转换规则包括将String类型转换为Number类型,将Boolean类型转换为Number类型,将Object类型转换为原始类型后再进行比较等。 综上所述,题目中的代码涉及了对象转换为数字和==运算符的类型转换规则。这是JavaScript中数据类型转换的一种练习题。 #### 引用[.reference_title] - *1* *3* [JS几种数据类型转换(内含练习题)](https://blog.csdn.net/BoZai_ya/article/details/117717329)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [js中的类型转换,面试必考](https://blog.csdn.net/weixin_39838846/article/details/124136250)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值