一丶js数据类型
- 基础类型:Number,String,Boolean,undefined,null
- 引用类型:object,array,function
检测数据类型的方法:
- 可以通
typeof
检测数据类型方法,但是检测数组和正则的时候返回的都是object
,所以typeof不能判断一个值是否是数组 instanceof/constructor
是检测一个实例是否属于某一个类使用的,可以用来检测数组和正则(instanceof/constructor
是检测原型的。)- Object.prototype.toString.call(value)是在Object原型上的tostring方法,并且让方法中的this变为value(value就是我们要检测数据类型的值)。检测的类型比较多,也比较精准。
null和undefined的区别
- null代表定义了并赋值了,只是值为null
- undefined代表定义了未赋值
二丶ES6语法
1.变量定义
let :没有预解析,自带块级作用域
const:常量,没有预解析,自带块级作用域,定义了就必须赋值,不允许修改。
2.箭头函数
() => {} //简化了匿名函数
-
模板字符串
使用反引号定义字符串
跟单引号双引号字符串相比较的好处:
-
分多行定义一个字符串,在控制台多行显示。
-
在模板字符串可以直接解析变量,省去拼接。
-
3.解构赋值
快速的批量的将对象和数组中的数据赋值给变量。
对象:
var {属性名,属性名} = 对象
var {属性名:变量,属性名:变量} = 对象
var {属性名:{属性名:变量}} = 对象
数组:
var [变量,变量] = 数组
var [变量,[变量,变量]] = 数组
数组解构可以实行一行代码交换两个变量的值
var [a,b] = [b,a]
4.函数默认值
带有默认值的形参,这个形参就必须放在所有形参的最后。这个形参在调用函数的时候可以传递实参,也可以不传递。
function (a,b=2) {
return a + b
}
let add = (a,b=2) => a + b //箭头函数默认值
5....
运算符
可以将多个元素合并为一个数组。当...数组
作为形参的时候,会将多个实参合并为一个数组
可以将对象或数组展开成多个健值对或多个值
var obj = {
name : '张三',
age : 12
}
var pbj = {
...obj,
sex : '男'
}
当...数组
作为实参的时候,将数组展开成多个数据对应多个形参
var add = [1,2,3,4,5,6,7,8]
Math.max(...add)
6.对象简写方式
如果对象的属性名和变量名同名,可以光写属性名
let name = '张三'
let age = 12
let obj = {
name,
age
}
7.Map数据
是一个属性可以是任意类型的对象
let obj = {name:'张三'}
let map = new Map([[obj,'对象'],['age':12]])
8.set数据
是一个对象属性组成的集合,没有重复的数组(可以利用set去重)
let arr = [1,1,2,3,2,4,1]
let brr = [...new Set(arr)]
9.for of
for of 是es6提供的一种遍历数据值的语法。可以遍历:字符串,数组,map,set