相信es6大家并不陌生,那么我还是简单介绍一下es6,es是15年发布的,可以用babel转化成es5可以支持低端浏览器,es6是一种新的语法,流行的库基本都是基于es6开发的。所以小伙伴要掌握哦!而且写起来简单优雅。

下面我给大家介绍一下es的常用语法。

一、let和const

这两个语法相信很多小伙伴已经经常使用了,下面我介绍一下var ,let, const 的区别

1、var:

  

var a=1;

console.log(a);//1

console.log(window.a) ;//1
// 如此可见用var声明一个变量a  是直接挂载到了window中哦,作用于全局,从而会污染全局。 {var a=1}
console.log(a) //1
{let a=1}
console.log(a) //a is not defined

  

2、let和const

  let与const都是只在声明所在的块级作用域内有效。

  let 声明的变量可以改变,值和类型都可以改变,没有限制。

  const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。

 const a ;//报错,一旦声明变量,应该立即赋值!
 const b = 2;
 b = 3//报错,因为定义常量之后不能成重新赋值!! 对于复合类型的变量,如数组和对象,变量名不指向数据,而是指向数据所在的地址。const命令只是保证变量名指向的地址不变,并不保证该地址的数据不变,所以将一个对象声明为常量必须非常小心。
//不会报错,因为names指向的地址不变,改变的只是内部数据
const names = [];
names[0] = 1
names[1] = 2
names[2] = 3

 

下面介绍一个小的语法点

 如果想让定义的对象或数组的内部数据也不能够修改和改变,可以使用object.freeze(names)进行冻结,这样为对象添加新属性就不起作用。

 除了将对象本身冻结,对象的属性也应该冻结。下面是一个将对象彻底冻结的函数

var constantize = (obj) => {
Object.freeze(obj);
Object.keys(obj).forEach( (key) => {
if ( typeof obj[key] === 'object' ) {
constantize( obj[key] );
}
});
};
有没有对let和const有更深的理解呢~~

二、模板字符串
//正常我们拼接字符串这样写
let name =“boke”
console.log("我的名字是"+name) //如果是模板字符串 console.log(`我的名字是${name}`) // 模板字符串也支持多行换行的。 let content=` ${name} `

  

三 、箭头函数 

相信我们react开发更熟悉这个箭头函数了,经常用箭头函数来解决this指向的问题。
// 曾经我们这样写函数

function hello(name){
console.log(`hello!${name}`);
} // 掌握了箭头函数可以这样写 const hello1 = (name) => {
console.log(`hello!${name}`);
}
hello('lili') //hello!lili
hello1('lili') //hello!lili const num = x =>x*2 num(5) // // 还可以设置默认值哦 const hello = (name='wenwen') =>{
console.log(`hello!${name}`);
}
hello() //hello!wenwen
hello('zhangfei') // hello!zhangfei

四、展开符的使用
//曾经我们的想给函数传递一个数组我们这样做。

function hello(name1,name2){
console.log(name1,name2);
}
let arr=['wenwen','haomei'] hello.apply(null,arr) // 现在我们可以这样做哦 hello(...arr)

  * 补充知识 apply:

apply:方法能劫持另外一个对象的方法,继承另外一个对象的属性.

    Function.apply(obj,args)方法能接收两个参数
    obj:这个对象将代替Function类里this对象
    args:这个是数组,它将作为参数传给Function(args-->arguments)

// 合并数组  对象

let obj ={name:'wenwen'}
let obj1={age:25}
// console.log({...obj,...obj1}) //{name:'wenwen',age:25} // console.log({...obj,...obj1,job:'程序猿'}) //{name:'wenwen',age:25,,job:'程序猿'}
// 注意 如果有重复,如果有重复的话第二个可以把第一个覆盖
五、对象的扩展(object)
//取key和value
obj={name:'wenwen',age:25,job:'猴子'} console.log(Object.keys(obj));// ["name","age","job"] console.log(Object.values(obj));// ["wenwen",25,"猴子"] console.log(Object.entries(obj));//[["name","age","job"],["wenwen",25,"猴子"]]

六 、解构赋值
批量赋值
const arr=['wenwen','chaoji','meili']
let [arg1,arg2,arg3]=arr
console.log(arg1,arg2,arg3)//wenwen chaoji meili
const obj={name:'wenwen',age:25,job:'猴子'}
let [name,age,job]=obj
console.log(name,age,job);//wenwen chaoji meili 七、class类

class MyId{
  constructor (){
    this.name ="wenwen"
  }
  do (){
    console.log(`${this.name}写bug`);
  }
}
doSome = new MyId()
doSome.do() //wenwen写bug 八、set去重
let arr=[1,1,'2','2','1','1',null,null]
console.log(new Set(arr));//{1,'2','1',null}
但是这里大家可以看到,set返回的是一个对象,但是我们想要的是数组啊。 这样我们就可以用到Array.from了 ,它的作用,就是可以把类数组对象、可迭代对象转化为数组。
let arr=[1,1,'2','2','1','1',null,null]
let arr2=Array.from(new Set(arr));

 console.log(arr2);//  [1,'2','1',null]

 

下面的import 和export就不多说了,到处都可以用的到哦,但是必须放在顶部引用才可以呢!

有不足之处希望大家多多交流给个意见。

es6 新语法分享给爱前端的伙伴的更多相关文章

  1. ES6新语法之let关键字;有别于传统关键字var的使用

    ES6新语法于2015年发布:而我这个前端小白在17年才接触到.惭愧惭愧!!不过到目前为止,似乎只有FireFox和Chrome对ES6的支持相对良好.不过既然人家ES6已经出来了,还是要跟上技术的潮 ...

  2. ES6新语法

    ES6新语法概览 简介 ES6是JavaScript语言的新一代标准,加入了一些新的功能和语法,正式发布于2015年6月,亦称ES2015:该标准由ECMA(欧洲计算机制造联合会)的第39号技术专家委 ...

  3. ES6新语法的介绍

    对于ES6新语法,阮一峰有一篇文章介绍的挺详细 http://es6.ruanyifeng.com/#docs/destructuring

  4. ES6入门五:箭头函数、函数与ES6新语法

    箭头函数的基本用法与特点 函数与ES6新语法 一.箭头函数的基本用法与特点 声明箭头函数采用声明变量和常量的关键字:var.let.const 箭头函数的参数:没有参数用"()"空 ...

  5. 总结常见的ES6新语法特性

    前言 ES6是即将到来的新版本JavaScript语言的标准,他给我们带来了更"甜"的语法糖(一种语法,使得语言更容易理解和更具有可读性,也让我们编写代码更加简单快捷),如箭头函数 ...

  6. 总结常见的ES6新语法特性。

    前言 ES6是即将到来的新版本JavaScript语言的标准,他给我们带来了更"甜"的语法糖(一种语法,使得语言更容易理解和更具有可读性,也让我们编写代码更加简单快捷),如箭头函数 ...

  7. ES6 | ES6新语法 在编码实践中的应用

    本章探讨如何将 ES6 的新语法,运用到编码实践之中,与传统的 JavaScript 语法结合在一起,写出合理的.易于阅读和维护的代码. 多家公司和组织已经公开了它们的风格规范,本文的内容主要参考了  ...

  8. es6新语法系列,查找字符串,模板字符串

    一.模板字符串: ES6引入了一种新型的字符串字面量语法,我们称之为模板字符串(template strings).除了使用反撇号字符 ` 代替普通字符串的引号 ' 或 " 外,它们看起来与 ...

  9. ES6新语法(一)

    1.常量         ES5没有定义声明常量的方式,ES6标准中引入了新的关键字const来定义常量.         常量必须给初始值: 常量不能在同一作用域内重新定义或赋值:  <scr ...

随机推荐

  1. Gym - 101194H Great Cells

    Problem H. Great Cells 题目链接:https://codeforces.com/gym/101194/attachments Input file: Standard Input ...

  2. 有道翻译爬取【json】

    ''' @Modify Time @Author ------------ ------- 2019/9/2 0:19 laoalo ''' import requests import json i ...

  3. vs2017或vs2019添加引用时报错

    我先安装的是vs2019,进入VS命令提示符里后一直说:gacutil 不是有效的命令,一直没能解决,然后直接装了vs2017后,该命令可以使用了, 还是用VS2017吧,2019的版本感觉还有点问题 ...

  4. 【C#学习笔记】string.Format对C#字符串格式化

    文章转自:CSDN   http://blog.csdn.net/samsone/article/details/7556781 1.格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格 ...

  5. crontab自动执行任务,失败原因记录

    服务器上使用crontab部署这两个每分钟自动执行的命令.首先,这两个命令是之前的人部署的,在我接手之前,就一直在了的.根据命令,实际上应该是做到每分钟都执行一次脚本.但是实际操作中,却发现,其实并没 ...

  6. hdu6570Wave (暴力求解)

    Problem Description Avin is studying series. A series is called "wave" if the following co ...

  7. 使用HEXO建站

    使用Hexo模板 按以下指导进行本地预览和上传到你的github. 环境安装 安装node.js node.js官方下载地址https://nodejs.org/en/ 设置npm淘宝镜像站(npm默 ...

  8. php abs函数怎么用?

    php abs函数怎么用? abs()函数的作用是返回一个数的绝对值.语法是abs(number),如果参数 number 是 float,则返回的类型也是 float,否则返回 integer(因为 ...

  9. 监控服务器的脚本log_agent

    监控服务器脚本: 将恶意攻击IP地址加入黑名单 1.分割日志 使用os.system 执行操作系统命令,使用重定向来分割日志 2.获取访问ip 读日志文件,获取访问ip记录,使用字符串.split来获 ...

  10. Spring cloud学习--Zuul01

    Zuul解决的问题 作为系统的统一入口,屏蔽了系统内部各个微服务的细节 可以与微服务治理框架结合,实现自动化的服务实例维护以及负载均衡的路由转发 实现接口权限校验与微服务业务逻辑的解耦 搭建Zuul服 ...