js中的数据类型隐式转换大坑以及相关面试题

本文探讨JavaScript中数据类型的隐式转换规则,并列举了五个相关面试题,包括数据类型转换、Map与parseInt的使用、成员变量优先访问以及变量提升等核心知识点,帮助读者深入理解JS中的潜在问题。
摘要由CSDN通过智能技术生成

js中的数据类型隐式转换大坑以及相关面试题

数据类型隐式转换规则以及相关面试题

1.基本数据类型
number,string,boolean bull undefined symbol bigint
2.引用数据类型
object function

1.数据类型的转换规则

/*
 * 把其他数据类型转换为Number类型
 *     1.特定需要转换为Number的
 *       + Number([val])
 *       + parseInt/parseFloat([val])
 *     2.隐式转换(浏览器内部默认要先转换为Number在进行计算的)
 *       + isNaN([val])
 *       + 数学运算(特殊情况:+在出现字符串的情况下不是数学运算,是字符串拼接)
 *       + 在==比较的时候,有些值需要转换为数字再进行比较
 *       + ...
 *     .......
 */

/*
 * 把其它数据类型转换为字符串
 *    1. 能使用的办法
 *      + toString()
 *      + String()
 *    2. 隐式转换(一般都是调用其toString)
 *      + 加号运算的时候,如果某一边出现字符串,则是字符串拼接
 *      + 把对象转换为数字,需要先toString()转换为字符串,再去转换为数字
 *      + 基于alert/confirm/prompt/document.write...这些方式输出内容,都是把内容先转换为字符串,然后再输出的
 *      + ...
 *    ......
 */
/*
 * 把其它数据类型转换为布尔
 *    1. 基于以下方式可以把其它数据类型转换为布尔
 *      + ! 转换为布尔值后取反
 *      + !! 转换为布尔类型
 *      + Boolean([val])
 *    2. 隐式转换
 *      + 在循环或者条件判断中,条件处理的结果就是布尔类型值
 *      + ...
 * 
 * 规则:只有 ‘0、NaN、null、undefined、空字符串’ 五个值会变为布尔的FALSE,其余都是TRUE
 */
/* 
 * 在==比较的过程中,数据转换的规则:
 *  【类型一样的几个特殊点】
 *     {}=={}:false  对象比较的是堆内存的地址
 *     []==[]:false
 *     NaN==NaN:false
 *  【类型不一样的转换规则】
 *     1. null==undefined:true,但是换成===结果是false(因为类型不一致),剩下null/undefined和其它任何数据类型值都不相等
 *     2. 字符串==对象  要把对象转换为字符串
 *     3. 剩下如果==两边数据类型不一致,都是需要转换为数字再进行比较
 */

面试题1

// 面试题1
let result = 100 + true + 21.2 + null + undefined + "Tencent" + [] + null + 9 + false;
console.log(result); // NaNTencentnull9false

console.log([]==false);// true
console.log(![]=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值