简述ES6新增的语法 一(基础语法let, const 箭头函数 , ...运算符等等)

ES6 新增了很多的语法规范,可以对写法和开发有很大的帮助

什么是ES6
ES6是ECMA Script 6.0的简称, 就是语言最新的标准, 发布与15年左右
目标让js语言成为能支持去编写大型复杂的应用语言, 成为企业级开发语言
ECMAScript 是定义标准的,JavaScript 是实现者

let声明变量

1.let声明的变量不会挂在window中,不会造成全局变量的污染
在这里插入图片描述在这里插入图片描述
2.let能定义块级作用于的变量 有效区域: 定义开始,到定义块结束
3.let是不允许重复声明同一变量名
在这里插入图片描述在这里插入图片描述
4.let不会有声明提前(只是人为看到的效果,实际上是有声明提前,提前临时性的死区中:Cannot access ‘num’ before initialization)
在这里插入图片描述在这里插入图片描述

const声明常量

1.跟let完全相同 增加几个点
5.不允许被修改(不允许改变内存空间的地址)
在这里插入图片描述在这里插入图片描述
6.const声明和赋值必须一次性完成,并且后期不允许改变存储空间的地址
在这里插入图片描述在这里插入图片描述
能使用const就使用const,不能使用就用let。常量的效率比变量要高

字符串

字符串模板
在以前的字符串之上增加了一些功能

var day = "今天";
var str = "天气不错";
console.log(`${day}${str}可以出去玩`)
`${表达式}字符串`
  可以添加串 可以使用转义字符 可以嵌套
console.log(`${true?`今天`:`明天`}\n出去`)

解构

结构化赋值
可以简化书写的长度,提升效率

let obj = {
	name : "jack",
	age : 18,
	sex : "nan",
	class : 10
}
let name,age;
({name,age} = obj);
console.log(name,age)

let {name , age} = obj
let {name : oName,age : oAge, sex:oSex} = obj;

… 运算符

收集 展开
运用在数组中,函数中 object是ES7新增的
起到参数收集作用
1. 收集符只能出现一次
2. 一个函数,剩余参数收集只能在最后一个形参

function sum(a,b,...args){
		console.log(args)
	}
console.log(sum(1,2,3,4,5,6)) 

起到参数展开作用
ES6针对数组 ES7针对对象

let arr = [1,2,3];
console.log(...arr);
let arr2 = [4,5,6];
let newArr = [...arr,...arr2];
console.log(newArr)·//123456

也可以是用在浅克隆

函数

参数默认值 可以传递表达式,不能传递语句

//container = getContainer()就是个表达式
function createElement(name = "div",container = getContainer(),content){
	const ele = document.createElement(name);
	if(content){
		ele.innerHTML = content
	}
	container.appendChild(ele)
}
function getContainer(){
	console.log('test');
	return document.getElementById("container")
}
createElement(undefined,undefined,"sdfsdfsd")
createElement(undefined,undefined,"sdfsdfsd")
createElement(undefined,document.getElementById("container"),"sdfsdfsd") 
// null在数学中,默认的为0,不要传递null
新增 new.target(可以判断构造函数是否使用new调用)
function Person(firstName,lastName){
		if(new.target === undefined){
			throw new Error("该函数必须使用new调用")
		}
		this.firstName = firstName;
		this.lastName = lastName;
		this.fullName = `${firstName} ${lastName}`
	}
	const p1 = new Person("张","三");
	console.log(p1);
	const p2 = Person("张","三");
	console.log(p2)

箭头函数(ES6新增)

语法:箭头函数是一个函数表达式,理论上,任何使用函数表达式的地方都可以改成箭头函数
(参数1,参数2…) => {
函数体
}

应用场景

1.临时使用的函数,并不会刻意的去调用
1.异步的处理函数
2.事件的处理
2.继续去沿用外层的this
3.对象的属性不要去用箭头函数,除非是特别的需求
4.数组方法的时候,保证代码的简洁

箭头函数的简写

1.如果参数只有一个,可以省略小括号
参数 => {}

 const print = num => {
	 	console.log(num)
 }
print(1000)

2.如果箭头函数只有一条返回语句(只有一个return 没有 console),可以省略花括号,也可以省略return
参数 => 返回值

 const isOdd = num => num % 2 !== 0;

3 如果返回值是一个对象的时候,就会认为成函数体,把返回值变成表达式的形式

const obj = (a,b) => ({a : a,b : b})

注意点:
1.箭头函数中没有this,argument,new.target,如果要强行使用,则指向函数外层对应的this,argument,new.target
2.箭头函数没有原型,所有说占用空间非常小,不能当成构造函数来使用

对象

ES6新增

1.属性简写
function createUser(loginId,loginPwd,nickName){
	return{
	 		loginId,
	 		loginPwd,
			nickName,
	 	
	}
}
const user = createUser("01","123","abc")
console.log(user)
2.方法简写
//在es6 之前对象中方法的写法是
fun = function(){
	console.log(“Holle”)
}	
//ES6可以写成下面这种
fun(){   //2方法速写,  不是箭头函数
	console.log(“Holle”)
 }
3.计算属性名

使用方式:
1.先声明一个变量或常量并赋值
2.在使用[]中写上声明的变量名.如下

const prop1 = "name";  
const user = {
	[prop1] : "老鼠",
		console.log(this[prop1]);
		console.log(use.name) 
		console.log(this[prop1] == use.name);//true
	}
}
新增了API

1.is() 基本上和===一样,除了以下两种情况
在 ES6之前没有is()方法的时候NaN不等于NaN +0等于-0 而使用is()方法中的情况是:

	Object.is(NaN,NaN) //true 
	Object.is(+0,-0)//false

2.assign() 用于混合对象,带浅克隆
将obj2的内容覆盖到obj1 会对obj1产生影响

	 const obj = Object.assign(obj1,obj2)
	console.log(obj == obj1)//true	
	const obj = Object.assign({},obj1,obj2) //返回一个新的对象(这里的{}是创建的一个新的对象)
	console.log(obj == obj1)//false

3…getOwnPropertyNames(obj)
枚举的顺序,返回一个数组,枚举出来对象的属性
对象的顺序其实是浏览器厂商自行规定
先排数字,升序
再排其他,按照书写顺序

4.setPrototypeOf() 设置某个对象的隐式原型 __ proto __
语法:Object.setPrototypeOf(obj, prototype)
参数:
obj :要设置其原型的对象。.
prototype :该对象的新原型(一个对象 或 null).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值