【JS】JavaScript基础知识自我检查大过关(第一关)变量声明与类型检查

750 阅读3分钟

嗨!~ 大家好,我是YK菌 🐷 ,一个微系前端 ✨,爱思考,爱总结,爱记录,爱分享 🏹,欢迎关注我呀 😘 ~ [微信号: yk2012yk2012,微信公众号:ykyk2012]

「这是我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战

1. 变量声明与类型

1.1 var let const 区别

  1. var是ES5语法,let、const是ES6的语法
  2. var有变量提升
  3. var、let是变量,可修改;const是常量,不可修改(可以用来定义引用类型)
  4. let、const 块级作用域;var函数作用域
varletconst
函数作用域块级作用域块级作用域
变量提升不存在变量提升不存在变量提升
值可更改值可更改值不可更改
全局声明会变成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 能判断哪些类型

  1. undefined、string、number、boolean、symbol、bigint【除了null的基本类型】
  2. function 【函数】
  3. object, (typeof null === 'object') 【所有引用类型只能到object这里】

1.5 判断数据类型的方式

  1. typeof 【除了null的基本类型 + function】
  2. instanceof 【引用类型】【从子类到父类直到object】【顺着原型链】
  3. toString() 【任意类型】
  4. 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 强制类型转换和隐式类型转换

  • 强制:parseIntparseFloattoString
  • 隐式:if、逻辑运算、==+拼接字符串

一定要看这个,狠详细 【JS】JavaScript-ES5数据类型-基本数据类型-引用数据类型-类型之间的转换-数据类型的判断

1.10 语句与表达式

表达式:一个表达式会产生一个值,可以放在任何一个需要值的地方

a
a+b
demo(1)
x===y? 'a': 'b'

语句

if(){}
for(){}

最后,欢迎关注我的专栏,和YK菌做好朋友!