xgqfrms™, xgqfrms® : xgqfrms's offical website of cnblogs! xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!

js var & let & const All In One

js var & let & const All In One

js var & let & const 区别对比

var let const 区别

  1. 是否存在 hoisting / 变量提升

var 存在 hoisting;
let, const 不存在 hoisting;

  1. 作用域范围

var 是全局 scope 或函数 scope;
let, const 是 block scope / 块级作用域;

  1. 能否重复声明

var 可以重复声明;
let, const 不可以重复声明,会抛出错误;

  1. 能否重新赋值

var 可以重新赋值,
let 可以重新赋值;
const 不可以重新赋值, 但是如果是引用类型 (Object / Array) 则可以修改其属性值

  1. 声明时否要初始化

var 可选初始化;
let 可选初始化, 但是存在 TDZ(暂时死区);
const 声明时必须初始化;

图解

const log = console.log;

var x = 1;

function func() {
  var x = 2;
  log(`function var`, x)
}

log(`global val`, x);
// val 1

func();
// function var 2


x = 11;

log(`x`, x);
// x 11



var x = 1;
x;
//1

var x = 11;
x;
// 11

let y = 2;
y;
// 2

let y = 22;
// Uncaught SyntaxError: Identifier 'y' has already been declared

const z = 3;
z;
// 3

const z = 33;
// Uncaught SyntaxError: Identifier 'z' has already been declared



demos

refs

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const

https://img2020.cnblogs.com/blog/740516/202009/740516-20200916112245619-985579667.png



©xgqfrms 2012-2025

www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!


posted @   xgqfrms  阅读(170)  评论(2编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
历史上的今天:
2019-09-16 git in depth
2019-09-16 git & Angular.js git commit 规范 All In One
点击右上角即可分享
微信分享提示