js是用来交互的
变量是存放数据用的
var 存在变量提升
let const 不存在变量提升 并且在当前作用域内 不能再次声明 在声明之前不能使用改变量(TDZ-暂时性死区)
const 声明常量 只有声明的是基本数据类型的时候不可改变 引用数据类型可以改变值
js数据类型 两种
基本数据类型(一般 简单)Number String boolean null undefined symbol bigInt
引用数据类型(复杂) Object function map set Array Data reg正则
区别在于存放的位置不一样 :基本是在栈中 赋值 引用是在堆中
null 既是对象又不是对象 薛定谔对象
数组是什么
有一个又一个的元素组成的有序的集合
声明数组
两种:字面量声明数组 var xxx 2.构造函数声明 var xxx = new Array()
数组有长度属性: 代表元素的个数 length
数组取值 一定要使用下标 下标 从0开始
长度和下标 没有关系
数组的操作方法
七个内置的操作方法 : 改变数组本身
push--尾部添加 返回新数组的长度 可以添加多个
pop--尾部删除 返回被删除的元素
unshift--头部添加
shift--头部删除
splice--增加 删除 修改 本质上是删除 返回被删除的元素所组成的数组(从哪里开始的下标,删除的长度,要替换的值)
sort--排序 返回排序后的数组 a-b正序 b-a倒序
reverse--数组反转 反转后的数组
循环遍历数组 forEach--对数组进行循环遍历
filter--数组过滤 返回所有符合条件的元素一个新数组
map--对数组的每一项进行操作 返回新数组
some--判断数组是否有满足条件的元素 如有返回true 没有false
every--判断数组中元素是否全部满足条件 如果是返回true否则false
indexOf--查找第一个符合条件的下标 查找不到返回-1
lastIndexof--查找最后一个符合条件的下标 查找不到返回-1
findIndex--查找第一个符合条件的下标 查找不到返回-1
find--查找第一个符合条件的元素 查找不到返回undefined
includes--是否包含某个元素 如果包含返回true否则false
数组和字符串相互转化
join('-')
split
伪数组/类数组,和数组类似 有数组的长度属性 但是没有数组原型链上的操作方法
常见的伪数组: arguments nodeList
伪数组转化为数组
var arr = Array.prototype.slice.call(伪数组)
var arr = [].slice.call(伪数组)
var arr = [...伪数组]