js逆向基础3数据类型转换续集与逻辑判断

遗留问题Symbol

应用:在企业开发中如果需要对一些第三方的插件,框架进行自定义的时候,可能会因为添加同名的属性或者方法,将框架中的原有属性或者方法覆盖掉,为了避免这种情况的发生,框架的作者或者我们就可以使用Symbol作为属性或者方法的名称。

var a = Symbol(1);

obj = {[a]:10};

b = Symbol(1)

obj[b] = 100; 

obj

e0eab17705c248b59220a0c4804649fe.png

==隐式转换

当使用==进行判断时,会出现较为复杂的情况。

当使用==进行比较时,会有以下转换规则(判断规则)。

1.当两类型如果相同,值相等则相等,返回true,如2==3肯定是false的了

2.比较的双方都为基本数据类型(得,引用数据类型数组,对象,函数不是基本数据类型)

a.若一方为null,undefined,则另一方必须为null,undefined 才为true,也就是null==undefiend为true或者null==null为true,因为undefined派生于null

b.其中一方为字符串(String),是的话把字符串(String)转为数字类型(Number)再来比较。

c.其中一方是Boolean,是的话将Boolean转为Number再来比较。

63cb071728894c1791461baa225adc31.png

 

d.其中一方是BigInt,是的话将BigInt转为Number再来比较。

e.其中一方是Object也就是引用类型,是的话将两方转为字符串进行比较。

b508b6ef98a34951a41255cff245604d.png

 

f.其中双方都为Object引用类型,则判断它门是不是指向同一个对象,也就内存地址是否相同。

69a4b18232e3462db6aa5d33ea56ed6f.png

注意:NaN ==NaN结果是false,这个是js底层特性问题,就当个结论记住吧

可以做做这两个个易错题:

console.log('11n'==11)

console.log({}=={})

console.log([]==![])

流程控制

判断

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

switch语句

switch(val)

{
case 值:

      执行的语句;

break

case 值1:

     执行的语句

break

default:

   执行的语句

break 

}

default是默认值的意思没有任何能匹配的就会走到default这。

如果case语句后面没有break就会匹配下面的case语句,直到遇见break或者}代表结束。

 

 

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值