首页IT科技变量variable 对于单元的特征描述(变量 var let 与const)

变量variable 对于单元的特征描述(变量 var let 与const)

时间2025-09-19 04:56:24分类IT科技浏览8616
导读:var var声明范围是函数作用域...

var

  var声明范围是函数作用域

  var声明提升:使用var声明的变量会自动提升到函数作用域的顶部                 ,此外使用var重复声明同一个变量也没有问题                         ,因为“提升                ”会将所有变量声明都拉到函数作用域的顶部        ,此时JavaScript引擎会自动将多余的声明在作用域顶部合并为一个声明        ,所以反复声明同一个变量也没有问题                 。

  例如:

var age=18; var time =2022; console.log(age);//18 console.log(time);/2022 var age,time;age=18; time=2022;console.log(age)//18console.log(time)//2022

let

  let声明范围是块作用域

  例如:

if(true){ let age=18; console.log(age);//18 } console.log(age)//ReferenceError: age 没有定义

  这里因为他的作用域只限于该块内部                         ,所以导致了报错

  同时let的声明不会在作用域中被提升

    在解析代码时                ,JavaScript引擎也会注意到块后面的let声明        ,严格来讲其实let也会被提升                         ,但是由于暂时性死区("temporal dead zone")                ,在let声明前执行都会抛出ReferenceError

  let在全局作用域中声明的变量不会成为window对象的属性(var则会)

  在使用var的时候,最常见的问题就是对迭代变量的奇特声明和修改                         。

  例如:

for(var i=0;i<5;i++){ setTimeout(()=> console.log(i),0) } //此时输出的为5                 、5                         、5        、5        、5

  之所以会这样                         ,是因为在退出循环时                        ,迭代变量保存的是导致循环退出的值:5        。在之后执行超时逻辑时,所有的i都是同一个变量                 ,因而输出的都是同一个最终值        。

  §而在使用let声明迭代变量时                        ,JavaScript引擎在后台会为每个迭代循环声明一个新的迭代变量(let声明的变量作用域只有块)                         。所以每次循环setTimeout引用的都是不同的变量实例        ,所以console.log输出的是我们期望的值                 ,也就是循环执行过程中每个迭代变量的值                。§

for(let i=0;i<5;i++){ setTimeout(()=> console.log(i),0) } // 此时输出的为0                         、1                、2        、3                         、4

const

  const的行为与let基本相同                         ,主要区别在于用它声明变量时必须同时初始化变量        ,且尝试修改const声明的变量会导致运行时错误        。

  const声明的限制只适用于它指向的变量的引用                         。所以const声明的变量        ,其内部的属性是可以被修改的                。

声明:本站所有文章                         ,如无特殊说明或标注                ,均为本站原创发布。任何个人或组织        ,在未征得本站同意时                         ,禁止复制                、盗用、采集                         、发布本站内容到任何网站                        、书籍等各类媒体平台                         。如若本站内容侵犯了原著者的合法权益                ,可联系我们进行处理                        。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
pc端4k视频播放器(适用于Windows7的顶级4k视频播放器免费下载支持32 位/ 64位操作系统-电脑学习网软件)