ES6之var/let/const

2 篇文章 0 订阅

javascript发展史

  • 1995年 发明js (只能显示文字,负责表单验证),之前是叫LiveScript 蹭热度 改成JavaScript
  • 1996年 发布JavaScript1.0和1.1版本
  • 1997年 三足鼎立(JavaScript(网景)、JScript(微软 IE3)、scripteEase(nombas)) ECMA 以JavaScript1.1为蓝本发布了ECMAScript1.0
  • 1999年 html4.0发布 微软提出异步传输,ActiveX,进入web2.0
  • 2008年 Chrome V8 执行速度快

var

变量声明提升
可重复定义
可挂载到window
存在闭包问题

1.变量声明提升

console.log(a);
var a;

2.可重复定义

下面的a可能会导致代码块一出现问题,但因为var可以重复定义,且不报错,所以就**无法定位问题**

var a=10;
/*代码块一*/
var a=20;
/*代码块二*/

3.可挂载到window

window里有很多属性,可能定义的变量名与window里的属性名相同,这就**导致window里原有的属性不能用**

var name;
window.name.....

4.只有两种作用域

全局作用域 window函数作用域(函数执行产生的作用域)
存在闭包问题

var arr=[];
for(var i=0;i<10;i++){
	arr[i]=function(){
		console.log(i)
	}
}
arr[0]();  //10
arr[4]();  //10
arr[7]();  //10

let

1.没有变量声明提升

console.log(name);   //报错,name未定义
let name = "dxb";

2.不可以重复声明变量

let name = "dxb";
let name = "dxb";      //报错,已经被定义过;
//混写也不可以
var name = "dxb";
let name = "dxb";      //报错,已经被定义过;

3.var可以变量提升

let name = "dxb";
console.log(window.name);   //undefined

4.加强对作用域的控制(块级作用域 {}

{
	let a=0; //只在这个{}里能用
}
console.log(a);  //报错,未定义

{
	let b=10; 
	{
		console.log(b);  //10
	}
}

5.暂时性死区:发生在欲编译阶段 ——TDZ(temporal dead zone):

当JavaScript引擎在扫面代码时(即预编译),如果变量时通过var声明的,则整体提升;如果通过let提升,就会把变量放到TDZ中
如果使用的变量在DTZ中就会报错
在遇到声明变量的代码,如:let num = 2就会把num从TDZ中拿出来

let x = 10;
{
	console.log(x)
	let x =20;    //报错,未定义
}

一定要先定义后使用
例1:let x = x;
报错;会先用右边的x,再声明
例2:

let i = 'window';    //不报错
for(let i = 0;i< 10;i++){    //不报错
	let i ;     //不报错
}
console.log(i);   //打印window

6.解决了闭包问题

在这里插入图片描述

const

const 存的是常量,不可以改变.

	//报错,没有给一个初始化的值
	const a;
	a=10;  
	 //报错,不可以改变初始值
	const b=20;
	b=20;  

存储常量的空间里的值不能被改变

	const OBJ = {};
	console.log(OBJ)  //{}
	OBJ .a=123;
	console.log(OBJ.a)    //123

类似于引用值和原始值的理解
在这里插入图片描述

总结

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值