一起聊聊var、let以及const的区别(代码示例)

 2977

本篇文章给大家带来了关于JavaScript的相关知识,其中主要给大家介绍了var、let以及const的区别有哪些,还有ECMAScript 和 JavaScript的关系介绍,感兴趣的朋友一起来看一下吧,希望对大家有帮助。


一起聊聊var、let以及const的区别(代码示例)


什么是JavaScript?

首先,ECMAScript 和 JavaScript 什么关系?

ECMAScript是一个国际通过的标准化脚本语言。

JavaScript由ECMAScript和DOM、BOM三者组成。 可以简单理解为:ECMAScript是JavaScript的语言规范,JavaScript是ECMAScript的实现和扩展。


var、let、const的区别?

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

  1. console.log(a); // undefined  ===>  a已声明还没赋值,默认得到undefined值
  2. console.log(b); // 报错:b is not defined  ===> 找不到b这个变量
  3. console.log(c); // 报错:c is not defined  ===> 找不到c这个变量
  4. var a = 100;    
  5. let b = 10;
  6. const c = 10;
  7. console.log(a);//a=100

2、let和const只能在块作用域里访问

  1. if(1){
  2.     var a = 100;
  3.     let b = 10;
  4.     const c = 1;
  5. }
  6.  
  7. console.log(a); // 100
  8. console.log(b)  // 报错:b is not defined  ===> 找不到b这个变量
  9. console.log(c)  // 报错:c is not defined  ===> 找不到c这个变量

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

  1. var a = 100;
  2. console.log(a); //控制台输出 100
  3.  
  4. var a = 10;
  5. console.log(a); //控制台输出 10
  6.  
  7. let a = 100;
  8. let a = 10;
  9.  
  10. //  控制台报错:Identifier 'a' has already been declared  ===> 标识符a已经被声明了。

4、const定义常量,而且不能修改,但是在定义的对象时对象属性值可以改变

  1. const a=2
  2. a=3
  3. console.log(a)  //控制台报错
  1. const person = {
  2.     name : 'make',
  3.     sex : '男'
  4. }
  5.  
  6. person.name = 'test'
  7.  
  8. console.log(person.name)    //运行发现控制台没有报错,且 person.name 被成功修改

????这是怎么回事呢?

因为对象是引用类型的,person中保存的仅是对象的指针,而修改对象的属性不会改变对象的指针,所以这种情况就会修改成功。也就是说const定义的引用类型只要指针不发生改变,都是被允许的。

接下来我们试着修改一下指针,让person指向一个新对象,最后果然报错

  1. const person = {
  2.   name : 'make',
  3.   sex : '男'}person = {
  4.   name : 'test',
  5.   sex : '男'}console.log(person.name)  //控制台报错


5、小结

var定义的变量变量提升,没有块的概念,可以跨块访问

let定义的变量只能在块作用域里访问,不能声明同名变量。

const用来定义常量,使用时必须初始化(即必须赋值),不能声明同名变量,只能在块作用域里访问,而且不能修改,但是在定义的对象时对象属性值可以改变。

他们都不能跨函数访问


TAG标签:
本文网址:https://www.zztuku.com/detail-13704.html
站长图库 - 一起聊聊var、let以及const的区别(代码示例)
申明:本文转载于《CSDN》,如有侵犯,请 联系我们 删除。

评论(0)条

您还没有登录,请 登录 后发表评论!

提示:请勿发布广告垃圾评论,否则封号处理!!

    编辑推荐