嗨!~ 大家好,我是YK菌 🐷 ,一个微系前端 ✨,爱思考,爱总结,爱记录,爱分享 🏹,欢迎关注我呀 😘 ~ [微信号:
yk2012yk2012,微信公众号:ykyk2012]
「这是我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战」
1. 变量声明与类型
1.1 var let const 区别
- var是ES5语法,let、const是ES6的语法
- var有变量提升
- var、let是变量,可修改;const是常量,不可修改(可以用来定义引用类型)
- let、const 块级作用域;var函数作用域
| var | let | const |
|---|---|---|
| 函数作用域 | 块级作用域 | 块级作用域 |
| 变量提升 | 不存在变量提升 | 不存在变量提升 |
| 值可更改 | 值可更改 | 值不可更改 |
| 全局声明会变成window对象的属性 | 不会 | 不会 |
| 可以重复声明 | 不可以重复声明 | 不可以重复声明 |
| 可以条件式声明 | 不可以条件式声明 | 不可以条件式声明 |
| 迭代变量保存的是退出循环的值 | 每次迭代声明一个独立实例 | 报错,因为值不可改变 |
【ES6】变量声明-var-let-const-区别与联系-总结
1.2 数据类型
- 值类型(7个):Undefined、Null、Number、String、Boolean、Symbol(ES6)、BigInt(ES10)
- 引用类型:Object:Array、Function
【JS】JavaScript-ES5数据类型-基本数据类型-引用数据类型-类型之间的转换-数据类型的判断
1.3 值类型与引用类型的区别
- 值类型 存在栈内存中,变量拿到的就是它的值
- 引用类型 存在堆内存中,变量拿到的只是它的一个引用,是它的地址
【JS】JavaScript-对象-Object-内建对象-宿主对象-自定义对象-操作对象-基本数据类型与引用数据类型区别
1.4 typeof 能判断哪些类型
- undefined、string、number、boolean、symbol、bigint【除了null的基本类型】
- function 【函数】
- object, (typeof null === 'object') 【所有引用类型只能到object这里】
1.5 判断数据类型的方式
- typeof 【除了null的基本类型 + function】
- instanceof 【引用类型】【从子类到父类直到object】【顺着原型链】
- toString() 【任意类型】
- Array.isArray() 【数组】
1.6 实现一个通用函数判断数据类型
const getType = (s) => {
const r = Object.prototype.toString.call(s)
return r.replace(/\[object (.*?)\]/, '$1').toLowerCase()
}
// 测试
console.log(getType()) // undefined
console.log(getType(null)) // null
console.log(getType(1)) // number
console.log(getType('YK菌')) // string
console.log(getType(true)) // boolean
console.log(getType(Symbol('YK菌'))) // symbol
console.log(getType({})) // object
console.log(getType([])) // array
1.7 === 与 ==
=== 严格的比较是否相等
== 会进行类型转换,再进行比较
以下都是成立的
100 == '100'
0 == ''
0 == false
fase == ''
null == undefined
有一个情况可以用下 ==
if(a == null) {}
// 等价于
if(a === null || a === undefined)()
1.8 truly变量与falsely变量
- truly变量:
!!a === true的变量 - falsely变量:
!!b === false的变量
以下是falsey变量,除了这六种情况,其余都是truely变量
!!0 === false
!!NaN === false
!!'' === false
!!null === false
!!undefined === false
!!false === false
1.9 强制类型转换和隐式类型转换
- 强制:
parseInt、parseFloat、toString - 隐式:
if、逻辑运算、==、+拼接字符串
一定要看这个,狠详细 【JS】JavaScript-ES5数据类型-基本数据类型-引用数据类型-类型之间的转换-数据类型的判断
1.10 语句与表达式
表达式:一个表达式会产生一个值,可以放在任何一个需要值的地方
a
a+b
demo(1)
x===y? 'a': 'b'
语句
if(){}
for(){}
最后,欢迎关注我的专栏,和YK菌做好朋友!