数据类型的转换和逻辑判断

本文详细解释了JavaScript中undefined、null、NaN的区别,以及不同类型间的转换规则,涉及数字、字符串、布尔值和Symbol的处理,还探讨了流程控制中的比较和转换机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

undefined、null、NaN的区别:
undefined表示已声明未赋值(未定义),

var a
var b ={}

null表示变量已声明且赋值为null,值为空值,用于将null赋给变量以预防内存泄露等问题
NaN和任何数据都不相等,包括本身,其他数据类型和NaN运算的结果都是NaN
undefined+1表示不合法的数,可以通过isNaN()来判断某个值。

Infinty 正无穷
-Infinty 负无穷
+0 ===-0 true 事实上并不完全相等
数据类型之间的转换:

强制转换成数字
Number([val]) 列表强制转化成数字结果是0

Number('11111')
11111
Number('')
0
Number('aaaa222')
NaN

布尔值转换成数字: 1 0
null转换是0
undefined是NaN
Symbol无法转换为数字,会报错
BigInt会去掉n Number(BigInt(10))
把对象转换成数字顺序优先级:
Symbol.toPrimitive>valueOf的原始值>toString
函数可视为对象
强制转换数字的另一种写法:
parselnt([val],[radix])
val必须是字符串,如果不是先隐式转换成字符串
radix是进制,默认是十进制,0x开头的默认16进制,遇到一个有效字符,就不向后查找

强制转换成字符串String([val])
若val是一个原始值,直接为字符串
val是一个对象,先调用Symbol.toPrimitive,如果没有,调用toString方法

ob[Symbol.toPrimitive]=function () {return 'abc'}
String(ob)
ob.toString()

强制转换成布尔值:
除0、NaN、空字符串、null、undefined、false返回的值是false外,其余都是true
强制转换成符号(Symbol)
每个从Symbol返回的symbol的值都是唯一的,一个symbol值能作为对象属性的标识符

a=Symbol('123456')
ob={
    [a]:10000
}

symbol不能new,创建一个符号,通常Symbol.for()创建一个全局符号.
symbol衍生功能迭代器:

var a =[1,2,3,4,5,6]
a[Symbol.iterator]
b = a[Symbol.iterator]()

symbol复写时会保留;
强制转换成对象:
object()

隐式转换:
不需要人工干预,自动转换
运算符隐式转换
先将其转换成Number

'20'-'10'
10

如果是对象,完全遵循Number强转的规则Symbol.toPrimitive>valueOf的原始值>toString
+的情况:+两边有值判断两边值的类型,两边都为数字,进行数字计算,若有一边是字符串,另一边也转换成字符串进行拼接,都为引用类型,都转换成字符串

var a={}
console.log{+b}

+b相当于转为数字
&& || 的返回值,返回最后一个执行了代码的返回值。
&& true的话向后走,||,false停
'=='转换
转换规则:
(1)两边类型如果相同,值相等,为相等。
(2)双方为基本数据类型,一方为null、undefined、另一方也需要是这样才能比较,一方是string,把String转化成Number进行比较,一方是Boolean,是的话,将Boolean转换成Number进行比较。
(3)一方有引用类型,一方为Object,另一方为String、Number或者
Symbol,将Object转换成字符串进行必将,双方都是引用类型,判断是不是指向同一对象。

流程控制
顺序、分支、循环
判断:
常见的判断结构:
1.

if(){}
else if(){}
else{}

2.default 是默认

switch(a){
    case 10:
        10
        break;
    case 2:
        console.log('1111')
        break;
    default:
        console.log('22222')
        break;
}

3.三元表达式
true?10:100
4.基于&& || 的组合
表驱动法:从表里查找信息不使用逻辑语句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值