JavaScript中的var、let和const:区别与使用
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
今天咱们来聊聊JavaScript中的三个关键字:var、let和const。它们在变量声明方面各有特色,让我们一起来看看它们之间的区别吧! 一、varvar 声明的变量既是全局变量,也是顶层对象的属性。例 如,在浏览器环境中,var a = 10; 会使得window.a 等于10。•「变量提升」:var 声明的变量存在变量提升的情况。比 如,console.log(a); var a = 20; 会被编译器解析 为var a; console.log(a); a = 20; ,所以输出undefined 。•「多次声明」:可以对一个变量进行多次声明,后面声明的变量会覆盖前面的变量声明。 例如,var a = 20; var a = 30; 最终a 的值是30。•「局部作用域」:在函数中使用var 声明的变量是局部的,不会影响到外部变量。例 如,function change() { var a = 30; } 不会改变外部的a 。二、letlet 是ES6新增的关键字,用于声明变量,并且只在let 命令所在的 代码块内有效。例如,{ let a = 20; } 外面访问a 会报错。•「不存在变量提升」:let 声明的变量不存在变量提升。例 如,console.log(b); let b = 2; 会直接报错。•「暂时性死区」:在声明let 变量之前,该变量是不可用的,称为“暂时性死区”。例 如,var a = 123; if (true) { a = 'abc'; let a; } 会报错。•「不允许重复声明」:在同一作用域中不能重复声明同一个变量。例 如,let a = 20; let a = 30; 会报错。三、constconst 声明的变量是只读的,一旦声明就不能修改。例 如,const a = 1; a = 3; 会报错。•「必须初始化」:const 声明的变量必须立即初始化,不能留到以后赋值。例 如,const a; 会报错。•「复杂类型」:对于复杂类型的数据(如对象),const 只能保证指针不变,不能保证 对象内部结构不变。例如,const foo = {}; foo.prop = 123; 是允许的, 但foo = {}; 会报错。四、区别总结var 有变量提升,let 和const 没有。•「暂时性死区」:var 没有,let 和const 有。•「块级作用域」:var 没有,let 和const 有。•「重复声明」:var 允许,let 和const 不允许。•「修改声明的变量」:var 和let 可以,const 不可以。使用建议能用 希望这篇文章能帮助你更好地理解 该文章在 2025/7/11 16:46:44 编辑过 |
关键字查询
相关文章
正在查询... |