首页 > 其他分享 >es6

es6

时间:2023-04-20 09:33:05浏览次数:52  
标签:es6 set const name 数组 console log

发展

ECMAScrip是浏览器脚本语言的规范,而各种我们熟知的js语言,如JavaScript是es的具体实现。

  • 1997年,为了统一各种不同script脚本语言,ECMA欧洲计算机制造商协会以JavaScript为基础,制定了ECMAScript标准规范。
  • 1998年6月,2.0版本发布。
  • 1999年12月,3.0.
  • 2007年10月,4.0草案发布
  • 2009年12月,5.0发布
  • 2011年,5.1.
  • 2015年,6发布,也就是ECMAScript 2015.其后采用年号做版本。

ES6教程——阮一峰

let和const命令

问题:var用来声明全局变量,即使在for循环内声明,仍可在循环外使用。造成可能的数据交叉污染

let声明的变量,只在其所在的局部范围内有效

const声明的变量是常量,不能被修改

字符串扩展

includes():返回布尔值,表示是否找到了参数字符串

startsWith():返回布尔值,表示参数字符串是否在原字符串的头部

endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部

字符串模板

var str `hello
world
123`;

在两个反引号`之间的部分都会被作为字符串的值,保留换行,甚至js脚本

解构表达式

数组结构

let arr = [1,2,3]
const [x,y,z] = arr
console.log(x,y,z)

对象解构

const person = {name:"jack",age:21,lanuage:{'java','js','css'}}
const {name,age,language} = person;
console.log(name);
console.log(age);
console.log(language);

对象解构使用别名

const {name:n} = person;
console.log(n)

函数优化

给一个函数参数设置默认值

function add(a,b=1){
    return a+b;
}
console.log(add(10));

箭头函数

var print = function(obj){
    console.log(obj)
}
//简写为
var print2 = obj=>console.log(obj);
//多个参数
var sum2 = (a,b)=>a+b;
//代码不止一行,可以用{}括起来
var sum3 = (a,b)=>{return a+b;}

对象的函数属性简写

let person = {
    name:"jack",
    eat:function(food){
        console.log(this.name+"在吃"+food)
    }
    //箭头函数版:
    eat2:food=>console.log(persone.name+"在吃"+food)
    //简写版:
    eat3(food){
        console.log(this.name+"在吃"+food)
    }
}

箭头函数结合解构表达式

const person= {
    name:"jack",
    age:21,
    language: ['java','js','css']
}
function hello(person) {
    console.log("hello,"+person.name)
}
//等价于
varhi= ({name}) =>console.log("hello,"+name);

map和reduce

map():接收一个函数,将原数组中的所有元素用这个函数处理后放入新数组返回。

//将一个字符串数组,转换为int数组
let arr = ['1','20','-5','3'];
console.log(arr);
arr = arr.map(s=>parseInt(s))
console.log(arr)

reduce():接收一个函数,将原数组中的所有元素用这个函数处理后放入新数组返回。

  • 第一个参数是上一次reduce处理的结果
  • 第二个参数是数组中要处理的下一个元素
const arr = [1,20,-5,3]
arr.reduce((a,b)=>a+b)

promise

promise是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。

可以通过Promise的构造函数来创建Promise对象,并在内部封装一个异步执行的结果。

const promise=new Promise(function(resolve, reject) {
    // ... 执行异步操作
    if (/* 异步操作成功 */){
        resolve(value);
    // 调用resolve,代表Promise将返回成功的结果  
	} else {
        reject(error);
	// 调用reject,代表Promise会返回失败结果  
	}
});
promise.then(function(value){
    //异步执行成功后的回调
})。catch(function(error){
    //异步执行失败后的回调
})

set和map

与数组相比

  • Set中只能保存不同元素,如果元素相同会被忽略
//Set构造方法可以接收一个数组或空
let set = new Set();
set.add(1);
let set = new Set([2,3,4,5,5])
//普通方法
set.add(1);//添加
set.clear();//清空
set.delete(2);//删除指定元素
set.has(2);//判断是否存在
set.keys();//返回所有key
set.values();//返回所有值
set.entries();//返回键值对集合;其keys、values和entries方法返回值一样的
set.size;//元素个数,是属性不是方法
  • Map结构的key可以是任意对象
// map接收一个数组,数组中的元素是键值对数组
const map=new Map([
    ['key1','value1'],
    ['key2','value2'],
])
// 或者接收一个set
const set=new Set([
    ['key1','value1'],
    ['key2','value2'],
])
const map2=new Map(set)
// 或者其它map
const map3=new Map(map);

模块化

  • export命令用于规定模块的对外接口
  • import命令用于导入其它模块提供的功能
const util = {
    sum(a,b){return a+b;}
}
export util;
//等价于
export const util = {
    sum(a,b){return a+b;}
}
//一切js变量都可以导出,比如基本类型变量、函数、数组、对象
//可以导出多个
var name="zhangsna";
var age=21;
export {name,age}
//省略名称
export default{
    sum(a,b){return a+b;}
}

导入

//导入util
import util from 'hello.js'
util.sum(1,3)
//批量导入
import {name,age} from 'user.js'
console.log(name+",今年"+age+"岁了")
  • 浏览器目前还不支持ES6的导入和导出功能
  • 可借助Babel-cli工具编译

对象扩展

keys(obj) :获取对象的所有key形成的数组

values(obj):获取对象的所有value形成的数组

entries(obj):获取对象的所有key和value形成的二维数组

assian:将多个src对象的值拷贝到dest中(浅拷贝)

数组扩展

find(callback) :把数组中的元素逐个传递给函数callback执行,如果返回true,则返回该元素

findIndex(callback):与find类似,不过返回的是匹配到的元素的索引

includes(value) :与find类似,如果匹配到元素,则返回true,代表找到了

标签:es6,set,const,name,数组,console,log
From: https://www.cnblogs.com/wd404/p/17335628.html

相关文章

  • web前端tips:ES6部分常用新特性介绍
    ES6(ECMAScript6,也称为ES2015)是JavaScript的一个重要更新版本,于2015年发布。它引入了许多新的语言特性和改进,使得JavaScript变得更加现代化、易读、易维护和更适合大型应用程序的开发。ES6主要的新特性包括:1.块级作用域:ES6引入了let和const关键字,可以用来声明块级作用域的变量和......
  • ES6 拼接字符串(angular)
    angular 拼接字符串有没有什么好办法呢,发现es6可以。拼接方式:用反引号(`)包裹起来特点:模板中的内容可以有格式并可以定义多行通过${}方式填充数据大括号里面可以进行运算和调用函数例子: //例1constcontent1='helloboys!';this.message=`helloworld!${content1}`;//......
  • es6 数组对象求和
    letlist=[{id:1,price:2},{id:2,price:4},{id:3,price:6},{id:4,price:8},];letres=list.reduce((sumData,key,index,arrData)=>{console.log('a',sumData);//上⼀次调⽤回调时返回的累积值c......
  • ES6 NO.1( var、let 和 const 命令 )| 前端小白的的第一篇博客~
    varvar声明的变量存在变量提升即在声明该变量之前就可以使用,值为undefined,其作用域为全局;let和constlet用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效;const只能用来声明常量,一旦赋值,不能修改,故使用const不能只声明不赋值;区别var和let......
  • 第137篇:重学ES6模块化
    好家伙, 我原本以为学完模块化之后,就能非常顺利的完成我的项目分包,然而并没有,这是非常重要的知识,而我没有学好所以我决定重学一遍 本篇为《阮一峰ECMAScript6(ES6)标准入门教程第三版》第23章"Module的语法"学习笔记  1.概述历史上,JavaScript一直没有模块(modu......
  • JavaScript ES6中class的用法
    实例代码如下classPerson{constructor(name){if(!arguments.length){console.log("我是个人")}else{console.log(`我是${name}`)}}......
  • Vue进阶(四十五):精解 ES6 Promise 用法
    一、前言复杂难懂概念先不讲,我们先简单粗暴地把Promise用一下,有个直观感受。那么第一个问题来了,Promise是什么呢?是类?对象?数组?函数?别猜了,console.dir(Promise)直接打印出来看看。这么一看就明白了,Promise是一个构造函数,自己身上有all、reject、resolve这几个眼熟的方法,原型上有th......
  • ES6 => map、filter方法的区别
    letdataArr=[{name:450200000,code:1},{name:450300000,code:2}....] map:会返回执行map方法的数组(dataArr),的所有项(条件不成立也会返回undefined),可以只返回项中的某一参数 filter:会返回执行filter方法的数组(dataArr),条件成立的项,会返回整个遍历的项(不能只返回项中的某一......
  • ES6中一些方便的数组方法和对象方法
    //一共七个方法,其实,都是带有遍历性质的方法参考https://blog.csdn.net/PeaYing/article/details/100175757......
  • 前端科普系列(4):Babel —— 把 ES6 送上天的通天塔
    作者:Morrain 一、前言在上一节《CommonJS:不是前端却革命了前端》中,我们聊到了ES6Module,它是ES6中对模块的规范,ES6是ECMAScript6.0的简称,泛指JavaScript语言的下一代标准,它的第一个版本ES2015已经在2015年6月正式发布,本文中提到的ES6包括ES2015、ES2016、ES201......