Skip to content

ES6的新特性 #46

Open
Open
@coderInwind

Description

@coderInwind

数组的解构

const  arr = ["item1","item2","item3"]
//当值not defined时给它一个默认值
const [item1,item2,item3,item4 = "abc"] = arr

console.log(item1,item2,item3,item4);
//输出item1 item2 item3 abc

console.log(...arr);
//输出item1 item2 item3

对象的解构

const obj = {
  name: "in wind",
  age: 18,
  height: 18.8,
};
const {name,age,height} = obj

console.log(name,age,height);
//输出in wind 18 18.8
//配置别名和默认值
const {sex:mySex = "男"} = obj

console.log(mySex);
//输出 男

const/let

const定义的是一个常量,定义的值是不可以被修改的
那为什么定义一个对象或者数组的时候,可以修改对象的属性或者数组的某个值呢
因为const定义对象或者数组的时候,保存的是他们的内存地址,指向堆中创建出的的数组或对象
进行修改时,该指针并不会改变
let定义一个变量

var和let/const的区别

1、var能重复定义,而let和const不行
2、var会造成变量提升,即在声明变量之前能被访问,而let和const没有变量提升,虽然他被创建出来了,但不能被访问到

块级作用域

function(){} {} if(){} for(){}等

暂时性死区

var a = "abc"
if(true){
//在一个块级作用域内,如果在let和const之前使用声明的变量,就会产生暂时性死区
	console.log(a)
	let a = "cba"
}

for of 和 for in

const arr = [1,2,3,4,5]
const obj = {a:"aaa",b:"bbb",c:"ccc"}
//for of遍历数组
for(const item of arr){
  console.log(item);
//输出数组的值1,2,3,4,5
}
//for of遍历对象会报错,因为没有迭代器对象
for(const item in arr){
	console.log(item);
//输出数组的key
}

for(const item in obj){
	console.log(item)
//输出对象的key
}

模板字符串

//模板字符串
const name = "inwind"
console.log(`这是${name}的博客`)
//输出 这是inwind的博客

//标签模块字符串
function foo(m,n,y){
  console.log(m,n,y);
//输出[ '我是', '身高', '米' ] inwind 18.8
}
const name = "inwind"
const height = 18.8
foo`我是${name}身高${height}米

函数参数的默认值

基本的就不提了,说一些细节

函数的length
function foo(a,b,c="1.88"){
  
}
console.log(foo.length);
//被设置默认值的参数是不会被算的函数length里的

函数的剩余参数

function foo(a,b,...args){
	console.log(args)
//输出['c','d','e','f','g']
}

foo("a","b","c","d","e","f","g")

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions