嘿,大家好!我是今天的讲师,让我们一起深入探讨一下JavaScript中const和Object.freeze()这对“冰火两重天”的组合。 讲座主题:const 与对象字面量冻结 (Object.freeze) 的微妙关系 今天,我们不讲教科书式的定义,来点更接地气的。想象一下,const就像是一个严格的门卫,它负责看守着你的变量指向的“房间”的入口,而Object.freeze()则是给这个“房间”里的家具全部贴上封条,禁止任何人挪动它们的位置。 让我们先从最基础的开始: 1. const:守住入口,不代表房间里的东西不变 const声明的变量,意味着这个变量一旦被赋值,就不能再指向另一个不同的值(也就是不能重新赋值)。但!注意这个“但”字,如果这个变量指向的是一个对象,const只能保证你不能让这个变量指向另一个对象,但它管不了对象内部属性的变化。 const myObject = { name: “小明”, age: 18 }; myObject.age = 20; // 这是允许的! 小明的年龄可以被修改 console.log(myObject); // 输出: { nam …
JS `const` 声明对象/数组:理解引用不可变性与内容可变性
各位,调试器拿好了吗?今天咱们来聊聊 JavaScript 里 const 这个磨人的小妖精,特别是它跟对象和数组搅和在一起的时候。别怕,咱们不整那些枯燥的定义,就用大白话,外加几个小例子,保证你听完之后,腰不酸了,腿不疼了,一口气能写十个 Bug… 哦不,是十个功能! 开场白:const 到底是个啥玩意儿? const,顾名思义,就是 constant 的缩写,意思是“常量”。在 JavaScript 里,const 用来声明一个常量,这意味着一旦你用 const 给一个变量赋值,这个变量就不能再被重新赋值了。听起来很简单,对吧?但问题就出在“赋值”这两个字上。 别急,先看几个简单的例子: const PI = 3.14159; // PI = 3.14; // 错误! Assignment to constant variable. const MESSAGE = “Hello, world!”; // MESSAGE = “Goodbye, world!”; // 错误! Assignment to constant variable. 上面这两个例子很直观,PI 和 MESSA …
let 与 const:块级作用域与变量提升的新理解
let 与 const:变量声明界的“革新派”与“老顽固” 想象一下,你正在参加一场编程界的“达人秀”,台上的选手们个个身怀绝技,争奇斗艳。在变量声明这个环节,var 是位老牌选手,经验丰富,观众缘也不错,但总给人一种“老一套”的感觉。这时,两位新选手横空出世,他们就是 let 和 const。 let 像是一位充满活力的年轻人,思维敏捷,灵活多变,打破了以往的规则,带来了“块级作用域”的概念。而 const 则是一位略显固执的老者,一旦被赋予了值,就坚守阵地,绝不轻易改变,它代表了“常量”的概念。 那么,let 和 const 究竟是如何改变了 JavaScript 的世界?它们与 var 又有什么区别?让我们一起走进这场变量声明的“达人秀”,一探究竟。 var 的“前世今生”:曾经的辉煌与隐患 在 let 和 const 出现之前,var 几乎是 JavaScript 中声明变量的唯一方式。它就像一位勤勤恳恳的老黄牛,任劳任怨,为 JavaScript 的发展立下了汗马功劳。 var name = “张三”; var age = 30; 这段代码看起来简单明了,但在背后却隐藏着一些 …