ES6新语法

86 阅读1分钟

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";