JS高级(8)ES6新增语法

1.let

1.1.let生命的变量旨在所处于的块级有效
举个例子:
	if(true){
		let a = 10
		console.log(a)		//10
	}
	console.log(a)		// a is not defined
1.2.不存在变量提升
举个例子:
	console.log(a)	// a is not defined
	let a = 10
1.3.暂时性死区
-- 利用let声明的变量会绑定在这个块级作用域,不会受到外界影响
var num = 10
 if(true){
 	console.log(num) num is note defined
 	let num = 30
}

2.const

声明常量,常量就是值(内存地址)不能变化的量
1.具有块级作用域
2.声明常量时必须赋值
	const PI = 3.14
3.常量赋值后,值不能修改
	const PI = 3.14
	PI = 5	//会报错
	const arr = [1,2]
	arr[0] = 3
	arr[1] = 4
	console.log(arr)	[3,4]
	arr = [6,7]		//报错,(直接修改为新数组会报错)
-- const声明的变量是一个常量
-- 既然是常量不能重新赋值
	基本数据类型,不能重新赋值
	复杂数据类型,不能更改地址
-- 声明const必须给值

3.let const var 的区别

varletconst
函数级作用域块级作用域块级作用域
变量提升不存在变量提升不存在变量提升
值可改变值可改变值不可改变

const使用建议:存储的数据不需要变化
1.函数的定义
2.PI
3.数学一定恒定不变的值

4.解构赋值

– 从数组中提取值,按照对应位置,对变量赋值,对象也可以实现解构。

4.1.数组解构
let [A,B,C] = [1,2,3]
console.log(A,B,C)		// 1,2,3
如果解构不成功,变量的值为undefined
4.2.对象解构
	let person = {name = 'Daiwang',age:17 }
	let {name,age} = person
	console.log(name,age)		// Daiwang 17
-- 还可以重命名 let {name:myName,age:myAge} = person
	console.log(myName,myAge)	//Daiwang 17
-- 利用解构赋值能够更方便的去取对象中的属性跟方法

5.箭头函数

() => {}
const fn = () =>{}
1.函数体只有一句代码,且代码的执行结果就是返回值,额可以省略大括号
	const sum = (num1,num2) => num1+num2
2.如果形参只有一个,可以省略小括号	

	const fn = n => n
箭头函数不绑定this关键字,箭头函数中的this,指向的是函数定义位置的上下文this
	const obj = {name :'Daiwang'}
	function fm() {
		console.log(this) 		obj对象
		return () =>{			obj对象
			console.log(this)	指向箭头函数定义的位置,那么这个箭头函数定义在fn里,而fn指向obj对象,所以这个this指向obj对象
		}
	}
const resFn = fn.call(obj
resFn()

注意:
··箭头函数中不绑定this,箭头函数中的this指向的是它所定义的位置,箭头函数的作用域指向谁,它就指向谁。
··箭头函数的优点在于解决了this执行环境所造成的一些问题,比如:解决了匿名this指向的问题(匿名函数的执行环境是具有局限性的,包括setTimeOut和setInterval中使用this所造成的问题。

面试题

var age = 100
var obj = {
	age:20
	say()=>{
		alert(this.age)
	}
}

obj.say()		//100

对象没有作用域,所以箭头函数虽然在对象中被定义,但是this指向全局作用域。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值