es6记录
var和let声明变量的作用域
{
var a = 5
let b = 4
}
console.log(a) //可以打印(全局作用阈)
console.log(b) //不能打印(局部作用阈)
var可以声明多次 ,let只能声明一次
{
var a = 456
let b = 123
let b = 1 // 报错重复声明
var a = 4556 //正常
}
js在运行时会预先将带有关键字var, function变量的赋值为undefine(变量提升机制)
console.log(xx)
var xx = 123
console.log(x)
let x = 465
const 声明常量后变量不可变,且声明时必须初始化
const a = 45
a = 45
数组解构
let arr = [1,2,3]
let [a,b,c] = arr
console.log(a,b,c) //打印1 2 3
对象解构
var person = {
name: "jack",
age: 21,
language: ['java','python','js']
}
var {name:NAME,age,language} = person
console.log(NAME,age,language);
字符串模版
let a = `
<div>
hello
<div>
`
字符串中插入变量和表达式
num = 123
function fun1(){
return 'abc'
}
let a = `aasf${num},${fun1()}` // aasf123,abc
函数参数的默认值 (直接在函数的参数列表赋值)
function fun1(m,n = 4){ // 有值则传值,没有值则使用默认值
return m+n
}
不定参数 ```javascript function fun2(...values){ return values.length // 返回传入的数组大小 } ``` 解构函数+解构
let a = {
name:'jack',
age:18
}
let s = ({name})=>{
console.log(name);
}
s(a) // jack
获取对象的键值对集合
let a = {
name:'jack',
age:18
language: ['python','java','javascript']
}
console.log(Object.keys(person)); // 获取key数组
console.log(Object.values(person)); // 获取value数组
console.log(Object.entries(person)); // 获取键值对数组
对象合并
let target = {a:1}
let source= {b:2}
let source2= {c:3}
Object.assign(target,source,source2) //{a:1, b:2, c:3}
拷贝对象
let a = {
name:'jack',
age:18
language: ['python','java','javascript']
}
b = {...a} //将对象的所有属性拷贝给b(深拷贝)