javascirpt-ES6+新特性

这里写目录标题

let:声明遍历,与var不同,他不存在变量提升,不影响作用域链。

const:定义常量,值不能修改的量,常量一般使用大写,常量所指向的地址没有发生改变,就不会报错。

数组解构赋值:

const my = ['test1','test2','test3'];
let [t1] = my
console.log(t1)	// test1

对象解构赋值:

const my = {
	name: '我的名字',
  age: '18',
  test: function(){
    console.log("我");
  }
};
let {name} = my;
console.log(name)	// 我的名字

参数默认值

function connect({host="127.0.0.1", username,password, port}){}

`:模板字符串,内容中可以直接换行,变量拼接。

let name = '名字'
let my = `我的名字是:${name}`

箭头函数

=>:箭头函数,箭头函数的this是是静态的,永远指向函数声明所在的作用域下的 this 的值,因此使用call是无法改变箭头函数的this

function getName(){
    console.log(this.name);
}
let getName2 = () => {
    console.log(this.name);
}
window.name = 'WindowName';
const school = {
    name: "schoolName"
}
getName.call(school)	// schoolName
getName2.call(school)	// WindowName

1)不能实例化,因为this是静态的。

2)不能使用 arguments 变量(arguments是用来保存参数的)

3)箭头函数适合与 this 无关的回调. 定时器, 数组的方法回调

4)箭头函数不适合与 this 有关的回调. 事件回调, 对象的方法

...args:REST参数,用来获取函数的实参,代替arguments

function date(...args){
    console.log(args);// filter some every map 
}
date('test1','test2','test3');	// ['test1','test2','test3']

...:spread扩展运算符,将『数组』或『对象』转换为逗号分隔的『参数序列』

const my = ['test1','test2','test3'];
function t1(){
    console.log(arguments);
}
t1(...my);// chunwan('test1','test2','test3')
// 对象合并
const skillOne = {q: '天音波'}
const skillTwo = {w: '金钟罩'}
const mangseng = {...skillOne, ...skillTwo};

function * name():生成器

是一种异步编程的解决方案。通过next()方法控制向下执行,yield是一个分隔符。

参数传递=>

function * gen(arg){
    console.log(arg);
    let one = yield 111;
    console.log(one);
    let two = yield 222;
}

//执行获取迭代器对象
let iterator = gen('AAA');
console.log(iterator.next());
//next方法可以传入实参
console.log(iterator.next('BBB'));
// AAA
// {value: 111, done: false}
// BBB
// {value: 222, done: false}

异步=>

//模拟获取  用户数据  订单数据
function getUsers(){
    setTimeout(()=>{
        let data = '用户数据';
        //调用 next 方法, 并且将数据传入
        iterator.next(data);
    }, 1000);
}
function getOrders(){
    setTimeout(()=>{
        let data = '订单数据';
        iterator.next(data);
    }, 1000)
}
function * gen(){
    let users = yield getUsers();
    let orders = yield getOrders();
}
//调用生成器函数
let iterator = gen();
iterator.next();

模块化的优势:防止命名冲突、代码复用、高维护性

三种包暴露方式

// 第一种:分别暴露
export let school = '尚硅谷';

// 第二种:统一暴露
let school = '尚硅谷';
function findJob(){
    console.log("我们可以帮助你找工作!!");
}
export {school, findJob};

// 第三种:默认暴露
export default {
    school: 'ATGUIGU',
    change: function(){
        console.log("我们可以改变你!!");
    }
}

三种包引入方式

// 第一种:通用引入
import * as m1 from "./src/javascript/m1.javascript";

// 第二种:解构赋值
import {school, teach} from "./src/javascript/m1.javascript";
import {school as guigu, findJob} from "./src/javascript/m2.javascript";
import {default as m3} from "./src/javascript/m3.javascript";

// 第三种:简便形式针对默认暴露
import m3 from "./src/javascript/m3.javascript";
  • Array.prototype.includes
  • 检查数组中是否包含某个元素,返回布尔值
  • 指数操作符
  • **
  • Math.pow是一样的,都是幂运算,计算次方
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值