3-1 JS数据类型相关

系列文章目录


目录

系列文章目录

前言

一、JS值类型和引用类型

二、手写深拷贝

三、类型转换

总结


前言

JS数据类型、手写深拷贝、类型转换


一、JS值类型和引用类型

值类型:string、number、boolean、undefined、Symbol

// 值类型
let a = 100;
let b = a;
a = 200;
console.log(b); // 100

引用类型:Object、Array、null(特殊引用类型,指针指向为空地址)、function(特殊引用类型,但不用于存储数据,所以没有“拷贝、复制函数”)

// 引用类型
let a = { age: 20 }
let b = a
b.age = 21
console.log(a.age) // 21

typeof 能判断值类型和函数类型

二、手写深拷贝

// 递归深拷贝
function deepClone(obj = {}){
    if(typeof obj !== 'object' || obj == null){
        // obj 是 null,或者不是对象和数组,直接返回
        return obj
    }
    // 初始化返回结果
    let result
    if(obj instanceof Array){
        result = []
    
    }else{
        result = {}
    }    

    for(let key in obj){
        // 保证 key 不是原型的属性
        if(obj.hasOwnProperty(key)){
            // 递归调用!!
            resule[key] = deepClone(obj[key])         
        }
    }
    // 返回结果
    return result
}
  • 注意判断值类型和引用类型
  • 注意判断是数组还是对象
  • 递归

三、类型转换

  • 字符串拼接
  • ==
  • if 语句和逻辑运算
  1. truly 变量:!!a === true 的变量
  2. falsely 变量: !!a === false 的变量
// 以下是 falsely 变量。除此之外都是 truely 变量
!!0 === false
!!NaN === false
!!'' === false
!!null === false
!!undefined === false
!!false === false
// 逻辑判断
console.log(10 && 0) // 0
console.log('' || 'abc') // 'abc'
console.log(!window.abc) // true


总结

以上JS数据类型基础知识

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值