JavaScript 中 var 和 let 和 const 关键字的区别

分类 : JAVA开发

var与let、const的区别

在最新的 ES6 中,新添加了两个用于变量声明的关键字 let 和 const

一、var声明的变量会挂载在window上,而let和const声明的变量不会:

var a = 'a';

console.log(a,window.a) //abc abc


let b = 'b';

console.log(b,window.b) //b undefined


const c = 123;

console.log(c,window.c) //123 undefined

二、var声明变量存在变量提升,let和const不存在变量提升

1 console.log(a); // undefined  ==>  a已声明还没赋值【var a】,默认得到undefined值

2 var a = 100;

1 console.log(b); // Uncaught ReferenceError: b is not defined ==> 报错:找不到b这个变量

2 let b = 10;

1 console.log(c); // Uncaught ReferenceError: b is not defined ==> 报错:找不到b这个变量

2 const c = 10;

三、let和const声明形成块作用域

1 {

2     var a = 100;

3     let b = 10;

4 }

5 console.log(a); // 100

6 console.log(b)  // 报错:b is not defined  ===> 找不到b这个变量

1 if(true){

2     var a = 100;    

3     const c = 1;

4 }

5  console.log(a); // 100

6  console.log(c)  // 报错:c is not defined  ===> 找不到c这个变量

四、同一作用域下let和const不能声明同名变量,而var可以

1 var a = 100;

2 console.log(a); // 100

3

4 var a = 10;

5 console.log(a); // 10

1 let a = 100;

2 let a = 10; //  控制台报错:Identifier 'a' has already been declared  ===> 标识符a已经被声明了。

五、暂存死区

1 var a = 100;

2 if(1){

3     a = 10;

4     //在当前块作用域中存在a使用let/const声明的情况下,给a赋值10时,只会在当前作用域找变量a,

5     // 而这时,还未到声明时候,所以控制台Error:a is not defined

6     let a = 1;

7 }

六、const

1 /*

2 *   1、一旦声明必须赋值,不能使用null占位。

3 *   2、声明后不能再修改

4 *   3、如果声明的是复合类型数据,可以修改其属性

5 * */

6

7 const a = 'abc';

8

9 const list = [];

10 list[2] = 'abc';

11 console.log(list);  //  [empty × 2, "abc"]

12

13 const obj = {a:100};

14 obj.a = 'abc';

15 console.log(obj);  // {a:'abc'}


分类: JAVA开发    访问() .NET技术    Web前端    JAVA开发    HTML基础    数据库    CSS基础    电脑知识   
CSS教程-web前端教程-免费教程
HTML教程-web前端教程-免费教程


分类

.NET技术 Web前端 JAVA开发 HTML基础 数据库 CSS基础 电脑知识

随机阅读

Java 和 Google Chrome 浏览器
80端口是什么?80端口被占用怎么解决?
C# 由Datatable导出Excel的方法
css font文字 字体大小使用到font-size
html中submit和button的区别
零基础学习C语言,怎么入门?
oracle sql like多个条件函数
oracle字段like多个条件
Oracle实现like多个值的查询-Oracle实现like多个值的
c语言用什么软件编写(新手c语言基础知识入门)

最新

零基础学习C语言,怎么入门?
C语言使用什么软件?
c语言用什么软件编写(新手c语言基础知识入门)
Oracle如何实现like多个值的查询
Oracle如何实现like多个值的查询 - 数据库
oracle 多个like条件查询
Oracle中关键字like的使用总结
oracle 中模糊查询对like的代替insrt()函数
oracle数据库模糊查询匹配多个字符串
Oracle如何实现like多个值的查询 - Oracle - 服务器

推荐阅读

c语言中break语句的作用
vscode----vue中HTML代码tab键自动补全
undefined是什么意思啊
C#语言之“string格式的日期时间字符串转为DateTime类型”
DIV CSS字体(font-family)实现字体样式设置
js 中日期 转换成时间戳 例如2013-08-30 转换为时间戳
C语言程序中break是什么意思?
replace和replaceAll是JAVA中常用的交换字符的办法
risk-taking中文是什么意思
html如何实现鼠标悬停显示文字,鼠标移走文字消失。


Copyright © 2017 CSS5.NET教程.CSS5 内容仅用于学习和测试参考。 css5.net All Rights Reserved 蜀ICP备15003849号-16