加入收藏 | 设为首页 | 会员中心 | 我要投稿 南京站长网 (https://www.025zz.com.cn/)- 自然语言处理、建站、经验、云计算、图像分析!
当前位置: 首页 > 教程 > 正文

varlet及const的差异是什么

发布时间:2023-07-12 11:30:34 所属栏目:教程 来源:互联网
导读:   这篇文章主要介绍了var、let及const的区别是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇var、let及const的区别是什么文章都会有所收获,下面我
  这篇文章主要介绍了var、let及const的区别是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇var、let及const的区别是什么文章都会有所收获,下面我们一起来看看吧。
 
  什么是JavaScript?
 
  首先,ECMAScript 和 JavaScript 什么关系?
 
  ECMAScript是一个国际通过的标准化脚本语言。
 
  JavaScript由ECMAScript和DOM、BOM三者组成。 可以简单理解为:ECMAScript是JavaScript的语言规范,JavaScript是ECMAScript的实现和扩展。
 
  var、let、const的区别?
 
  1. var声明变量存在变量提升,let和const不存在变量提升
 
  console.log(a); // undefined  ===>  a已声明还没赋值,默认得到undefined值
 
  console.log(b); // 报错:b is not defined  ===> 找不到b这个变量
 
  console.log(c); // 报错:c is not defined  ===> 找不到c这个变量
 
  var a = 100;
 
  let b = 10;
 
  const c = 10;
 
  console.log(a);//a=100
 
  2. let和const只能在块作用域里访问
 
  if(1){
 
      var a = 100;
 
      let b = 10;
 
      const c = 1;
 
  }
 
  console.log(a); // 100
 
  console.log(b)  // 报错:b is not defined  ===> 找不到b这个变量
 
  console.log(c)  // 报错:c is not defined  ===> 找不到c这个变量
 
  3. 同一作用域下let和const不能声明同名变量,而var可以
 
  var a = 100;
 
  console.log(a); //控制台输出 100
 
  var a = 10;
 
  console.log(a); //控制台输出 10
 
  let a = 100;
 
  let a = 10;
 
  //  控制台报错:Identifier 'a' has already been declared  ===> 标识符a已经被声明了。
 
  4. const定义常量,而且不能修改,但是在定义的对象时对象属性值可以改变
 
   const a=2
 
   a=3
 
   console.log(a)  //控制台报错
 
  const person = {
 
      name : 'make',
 
      sex : '男'
 
  }
 
  person.name = 'test'
 
  console.log(person.name)    //运行发现控制台没有报错,且 person.name 被成功修改
 
  ????这是怎么回事呢?
 
  因为对象是引用类型的,person中保存的仅是对象的指针,而修改对象的属性不会改变对象的指针,所以这种情况就会修改成功。也就是说const定义的引用类型只要指针不发生改变,都是被允许的。
 
  接下来我们试着修改一下指针,让person指向一个新对象,最后果然报错
 
  const person = {
 
    name : 'make',
 
    sex : '男'}person = {
 
    name : 'test',
 
    sex : '男'}console.log(person.name)  //控制台报错
 
  5. 小结
 
  var定义的变量,变量提升,没有块的概念,可以跨块访问。
 
  let定义的变量,只能在块作用域里访问,不能声明同名变量。
 
  const用来定义常量,使用时必须初始化(即必须赋值),不能声明同名变量,只能在块作用域里访问,而且不能修改,但是在定义的对象时对象属性值可以改变。
 
  他们都不能跨函数访问
 

(编辑:南京站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章