es6关于let和const的总结
2024-08-24 07:50:12
set用于声明变量
1.var 的一个升级版
2.不存在变量提升
console.log(a);//Uncaught ReferenceError: a is not defined
let a=1;
console.log(a);//1
console.log(a);//undefined
var a=1;
console.log(a);//1
3.会形成暂时性死区(处于同一个块级作用域里的同名变量在let声明之前使用都会报错)
let a=2;
console.log(a);//报错
var a=1;
console.log(a);
4.在同一个块级作用域里面不允许重复声明同一个变量
if(2>1){
let a=1;
var a=2;
console.log(a)
}
//报错
if(2>1){
let a=1;
let a=2;
console.log(a)
}//报错
if(2>1){
let a=1;
a=2;
console.log(a)
}//2
5.块级作用域(不在同一个块里面的变量不会互相影响,①内层变量不能覆盖外层变量;②循环变量不会泄漏为全局变量;③var的for循环会发生值得覆盖,let的for循环会将每一次循环产生的值储存)
let a=3;
if(2>1){
let a=1;
if(3>2){
let a=2
console.log(a)//2
}
console.log(a);//1
};
console.log(a)//3
for(var i=0;i<5;i++){
var a=2;
};
console.log(i)//5
var arr=[];
for(var i=0;i<5;i++){
function f(){
console.log(i)
};
arr.push(f)
};
arr.forEach(function(e){
console.log(e())
})//5,5,5,5,5
var arr=[];
for(let i=0;i<5;i++){
function f(){
console.log(i)
};
arr.push(f)
};
arr.forEach(function(e){
console.log(e())
})//0,1,2,3,4
const用来声明变量
1.一旦声明,其值不能发生改变
const a=1;
a=2;//报错
2.一旦声明变量就必须赋值
const a;//报错
3.对于复合型变量,变量名不指向数据,而是指向数据所在地址,因此const只会保证变量名指向的地址不会变,不会保证数据不变
const obj={};
obj.name='张三';
console.log(obj.name)//'张三'
const a=[];
a.push('王炜');
console.log(a[0])//王炜
4.可以采用object.freeze方法将对象冻结
const obj=obj.freeze({});
obj.name="王炜";
console.log(obj.name)//报错
5.拥有块级作用域,只在声明的块里面有用
if(true){
const a=1;
};
console.log(a)//Uncaught ReferenceError: a is not defined
最新文章
- Maven手动下载jar
- JDE 增加合计列
- COOKIE和SESSION关系和区别
- Beetl2.2使用说明书20151201
- Java中几种日志方案
- alt text 与 tooltip区别
- Eclipse一个打开文件夹目录插件——Open In Explorer
- 活动图(Activity Diagram) - 项目分解文章
- linuxsocket通信recv研究缓存机制
- mint-ui在vue中的使用。
- Activity的运行过程
- 死磕 java集合之PriorityQueue源码分析
- __x__(13)0906第三天__xhtml 的语法规范
- 使用JavaScript实现单向链表
- Can not issue data manipulation statements with executeQuery()错误解决
- 【转】MVC5学习笔记 BindAttribute
- Gradle语法基础解析
- Vue学习笔记之Nodejs入门
- 经典的兔子生兔子问题(C#递归解法)
- 转:评估指标MAP