MJ系列之JS汇总

这篇博客全面总结了JavaScript的核心知识点,包括数据类型、类型转换、类型检测、数组判断方法、深拷贝与浅拷贝、原型链与原型、new、call、apply、bind、this的用法、事件循环机制、事件(冒泡、捕获、委托)以及内存管理和防抖节流策略。深入理解这些概念对于提升JavaScript编程能力至关重要。
摘要由CSDN通过智能技术生成

JS汇总

数据类型

基本数据类型:字符串、数字、布尔、null、undefined、Symbol、bigInt
引用数据类型:Object,包括函数、数组、对象等
Symbol这种类型的对象永不相等,即便创建的时候传入相同的值也不相等。
BigInt数据类型的目的是比Number数据类型支持的范围更大的整数值。
引用数据类型存储在堆内存中,但是会在栈内存中存一个指针。引用发图数据类型占据空间大、大小不固定
基本数据类型变量保存在栈内存中,因为基本数据类型占用空间小、大小固定,通过值来访问
引用数据类型会在栈中存储一个指针,这个指针指向堆内存空间中该实体的起始地址。
当解释器寻找引用值时,会先检索其在栈中的地址,取得地址后,从堆中获得实体。

类型转换

类型转换
隐式转换:if括号里变量会转换成布尔
遇到宽松相等开启隐式转换:布尔会转换成数字,字符串遇到数字会变成数字,对象遇到基本数据类型会依照ToPrimitive规则转换为原始类型
ToPrimitive:对象的ToPrimitive操作会先调用valueOf方法,返回一个原始类型的值,如果valueOf不存在或者返回的不是原始类型值,就用toString方法返回一个原始类型。如果不是,就抛出异常。

一些常见的转换:

String(null) //'null' 同undefined,true,false
String([null][]) // '',同undefined
String({
   }) //[Object Object]
Number(null) // 0
Number(undefined{
   }) // NaN
Boolean([]) // true,假只有null、undefined、false、0、NaN
Boolean({
   }) // true

一些常见的类型相等:

[] == ![] // true
[null] == 0false // 同undefined
[]['0']'0' == false0
null == undefined

一些常见的坑:(下面全是错的)

[] == []
{
   }=={
   }
{
   }==!{
   }
null==0
undefined==0

对象比较的是引用值在内存中是否指向同一对象,上面的两个对象互不相干。
加减

console.log("20" + 6) // "206" 字符串拼接 string + number = string
console.log("16" - 6) // 10 减法运算 string - number = number

类型检测

类型检测
typeof:字符串、数字、布尔、undefined、object(null)、function
instanceof:某个对象的原型链是否包含某个构造函数的 prototype 属性,适用于任何 object 的类型检查之外,也可以用来检测内置对象,比如:Array、RegExp、Object、Function,对基本数据类型不起作用因为没有原型链
constructor:确定当前对象的构造函数
hasOwnProperty:判断属性是否存在于当前对象实例中(而不是原型对象中)

var arr = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值