const、var、let用法

这篇具有很好参考价值的文章主要介绍了const、var、let用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

var

当使用 var 声明变量时,该变量的作用域是在最近的函数体内,而不是块级作用域(例如 if 语句、for 循环等)。这意味着在函数内部,无论变量是在函数的哪个位置声明的,它都可以被访问到。

另外,使用 var 声明的变量具有变量提升(hoisting)的特性。这意味着变量声明会被提升到函数的顶部,无论声明语句是在函数的哪个位置。这使得你可以在变量声明之前使用变量,尽管在实际代码中它们的位置是在变量声明之后。

例如:

function example() {
  console.log(x); // 输出 undefined
  var x = 5;
  console.log(x); // 输出 5
}

example();

在这个例子中,var x 声明被提升到了函数的顶部,所以在第一个 console.log 语句中,变量 x 被声明但尚未赋值,因此它的值是 undefined。在第二个 console.log 语句中,x 被赋值为 5,因此输出为 5

需要注意的是,在使用 var 声明变量时,如果在同一个函数内部多次使用相同的变量名进行声明,后面的声明会覆盖前面的声明,而不会抛出错误。这种行为被称为变量的重复声明。

总结起来,var 声明的变量具有函数作用域,在函数内部任何位置都可以访问,且变量声明会被提升到函数的顶部。然而,由于 var 存在一些容易引发问题的特性,如变量提升和变量的重复声明,推荐使用 letconst 来代替 var,以提升代码的可读性和维护性。

const

当使用 const 声明变量时,它创建一个具有块级作用域的常量。常量是指其值在声明后不能被修改的变量。

关于 const 的特性和用法,可以总结如下:

  1. 块级作用域: const 声明的变量具有块级作用域,它们只在声明的块内部有效,例如在 {} 内部的代码块中。

  2. 必须初始化: 在使用 const 声明变量时,必须同时进行初始化,即为常量赋予一个初始值。

  3. 不可重新赋值: const 声明的常量的值在初始化后不能被修改,尝试重新赋值会导致错误。

  4. 复合数据类型可变性: 对于复合数据类型(如对象和数组),const 只保证变量引用的地址不变,但是可以修改对象或数组本身的属性或元素。

以下是一些示例代码,展示了 const 的用法和行为:

const x = 5;
console.log(x); // 输出 5

x = 10; // 报错,常量不能重新赋值

const obj = { name: 'John' };
obj.name = 'Jane'; // 可以修改对象的属性

const arr = [1, 2, 3];
arr.push(4); // 可以修改数组的元素

const y; // 报错,常量必须初始化

 需要注意的是,const 并不表示变量的值是不可变的,而是变量的引用是不可变的。如果需要完全不可变的值,可以考虑使用其他方式,例如使用不可变的数据结构或深度冻结对象。

总结起来,const 用于声明常量,具有块级作用域,必须进行初始化且不能重新赋值,但对于复合数据类型,其属性或元素是可以修改的。使用 const 可以增加代码的可读性和可维护性,以表达意图明确的常量值。

let

 

  1. 块级作用域: 使用 let 声明的变量具有块级作用域。块级作用域是指变量在声明的块(通常是由 {} 包裹的代码)内部有效,超出该块就无法访问变量。这使得变量的作用范围更加可控,可以避免变量的意外污染和冲突。

  2. 不允许重复声明: 在同一个作用域内,不允许使用 let 重复声明已存在的变量。这与 var 不同,var 允许重复声明并且不会报错,这可能导致变量被意外覆盖或引起混淆。

  3. 暂时性死区(Temporal Dead Zone,TDZ): 当程序执行到 let 声明的变量之前,变量进入了暂时性死区,即该变量无法被访问。这是为了避免在变量声明前就使用变量,从而引发错误。只有当程序执行到变量声明的位置时,变量才会被初始化并进入作用域。

下面是一些示例代码,展示了 let 的使用和行为:

let x = 10;
{
  let x = 20;
  console.log(x); // 输出 20,内部块级作用域中的 x
}
console.log(x); // 输出 10,外部块级作用域中的 x

let x = 10; // 报错,重复声明 x

console.log(y); // 报错,y 在暂时性死区中
let y = 20;

 也就是说let和const非常的相似只是let没有const不可重复赋值的特性文章来源地址https://www.toymoban.com/news/detail-510070.html

到了这里,关于const、var、let用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • let、const、var的区别,解构赋值,箭头函数

    使用var声明的变量,其作用域为该语句所在的函数内,且存在变量提升现象。 使用let声明的变量,其作用域为该语句所在的代码块内,不存在变量提升。 使用const声明的是常量,在后面出现的代码块中,不能在修改改常量的值。 var let const 函数级作用域 块级作用域 块级作用域 变量提

    2024年02月05日
    浏览(36)
  • 深入解析JavaScript中的var、let和const

    🧑‍🎓 个人主页: 《爱蹦跶的大A阿》 🔥 当前正在更新专栏: 《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​  ​         变量的声明是编程中非常基础和关键的概念。在ES6之前,JavaScript只有var一种声明变量的方式。ES6带来了let和const来声明变量

    2024年01月20日
    浏览(33)
  • JavaScript 中的 Var、Let 和 Const 有什么区别

    ES2015(ES6)推出了许多闪亮的新功能。从 2020 年开始,我们假设许多 JavaScript 开发人员已经熟悉并开始使用这些功能。 尽管这个假设可能部分正确,但是其中某些功能可能对一些开发人员来说仍然是个谜。 ES6 附带的功能之一是添加了 let 和 const ,可用于变量声明。问题是,

    2024年02月09日
    浏览(57)
  • ES6知识点汇总(1)--var/let/const

    1、var 在ES5中,顶层对象的属性和全局变量是等价的,用var声明的变量既是全局变量,也是顶层变量 注意:顶层对象,在浏览器环境指的是window对象,在 Node 指的是global对象 使用var声明的变量存在变量提升的情况 在编译阶段,编译器会将其变成以下执行 使用var,我们能够对

    2024年02月12日
    浏览(37)
  • JS中var、let以及const关键字到底怎么用?

    在学习JS变量之后,初学者都避免不了都会一下子分不清这三个变量在代码块中的作用域范围,其实 const 简单理解它就是定义常量的,但是在实际开发中,我们却很常见它的身影。 说实话刚开始我也分不清他们的作用域范围,但是自己再去详细看一遍教程之后,其实发现还是

    2023年04月13日
    浏览(29)
  • ES6中let和const关键字与var关键字之间的区别?

    前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而又亲切的学习平台。在这个

    2024年02月09日
    浏览(40)
  • 17. C++ static、const 和 static const 类型成员变量声明以及初始化

    1. C++ static、const 和 static const 类型成员变量声明以及初始化 const 定义的常量在超出其作用域之后其空间会被释放; static 定义的静态常量在函数执行后不会释放其存储空间; 1.2 static static 表示的是静态的 类的静态成员函数、静态成员变量是和类相关的,而不是和类的具体对

    2024年01月18日
    浏览(49)
  • CSS变量 var()的用法

    这里介绍一下开发中常用的css变量 var() ,它可以实现样式的动态设置,使用方法主要分为全局使用和局部使用两种。 如何定义CSS变量var() 在CSS文件中,变量需要使用 – 作为前缀来定义,后面跟上变量名和值,如: 上述代码实现了在根元素定义了一个名为 --primary-color 的样式

    2024年02月07日
    浏览(26)
  • 面向对象【成员变量与局部变量、方法声明与作用】

    Java中的成员变量是指 类中声明的变量 ,也称为实例变量或属性。它们与方法一样属于类的成员,不同之处在于,它们存储在对象(堆)中而不是栈中,并且每个对象都有自己的一组值。 成员变量可以用来描述一个对象的状态,例如人的年龄、学生的姓名等。它们可以具有pub

    2024年02月10日
    浏览(50)
  • ES6系列之let、const、箭头函数使用的坑

    变量提升 块级作用域的重要性 箭头函数this的指向 rest参数和arguments Babel是一个广泛使用的ES6转码器,可以将ES6代码转为ES5代码,从而在老版本的浏览器执行。这意味着,你可以用ES6的方式编写程序,又不用担心现有环境是否支持。  上面的原始代码用了箭头函数,Babel将其转

    2024年02月14日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包