let关键字
- 不允许重复声明
- 块儿级作用域
- 不存在变量提升(不能在未定义之前使用)
- 不影响作用域链
const关键字
- 声明必须赋初始值
- 标识符一般为大写
- 不允许重复声明
- 值不允许修改
- 块儿级作用域
解构赋值
数组的结构
const Hua = ['小花','刘花','赵花','宋花'];
let [xiao, liu, zhao, song] = Hua;
// 结构赋值完,可以直接使用
console.log(xiao);
console.log(liu);
console.log(zhao);
console.log(song);
对象的解构
const mj = {
name: 'MichaelJackson',
age: '50',
show: function(){
console.log("I can dance.");
}
};
let {name, age, show} = mj;
console.log(name);
console.log(age);
console.log(show);
show();
let {show}=mj
show();
模板字符串
模板字符串(template string)是增强版的字符串,用反引号(`)标识
- 字符串中可以出现换行符
- 可以使用 ${xxx} 形式输出变量
// 定义字符串
let str = `<ul>
<li>hello</li>
<li>world</li>
</ul>`;
// 变量拼接
let name = 'bob';
let result = `hello,${bob}`;
rest参数
ES6引入 rest参数,args是个数组,用于获取函数的实参,用来代替 arguments
// 作用与 arguments 类似
function add(...args){
console.log(args);
}
add(1,2,3,4,5);
// rest 参数必须是最后一个形参
function minus(a,b,...args){
console.log(a,b,args);
}
minus(100,1,2,3,4,5,19);
扩展运算符
类似rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列,对数组进行解包。
数组扩展
var a =[1,2]
console.log(...a)
var c =[...a,4,5]
console.log(c)
函数参数扩展
function sum(x, y, z) {
return x + y + z;
}
const numbers = [1, 2, 3];
console.log(sum(...numbers));
类数组对象转数组
let ps= document.querySelectorAll('p');
[...ps].forEach(p=>{console.log(p.innerText)})
函数默认值
function multiply(a, b = 1) {
return a*b;
}
multiply(5); // 5
模块化
写法1
// 导出单个特性
export let name='mj';
export let age=50;
export fuction getName(){}
import {name,age,getName} from "module-name";
写法2
let name='mj';
let age=50;
function getName(){}
export{name,age,getName}
import {name,age} from "module-name";
写法3
export default function(){}
import custom from "module-name";