PowerPC架构SPR访问与AltiVec向量指令集实战解析
2026/6/14 22:42:07
变量就像一个带标签的盒子,你可以把数据(数字、文字、对象等)存进去,之后通过标签(变量名)来访问或修改里面的数据。JavaScript 中声明变量有 3 种方式,对应不同的特性。
| 关键字 | 作用域 | 变量提升 | 重复声明 | 能否修改 | 核心特点 |
|---|---|---|---|---|---|
var | 函数作用域 / 全局 | 有(提升到作用域顶部,值为 undefined) | 允许 | 能 | ES5 及之前的声明方式,易出问题 |
let | 块级作用域({}内) | 有 “暂时性死区”(不可提前访问) | 不允许 | 能 | ES6 推荐,替代 var |
const | 块级作用域 | 有 “暂时性死区” | 不允许 | 不能(常量) | 声明时必须赋值,值不可改(引用类型仅地址不可改) |
javascript
运行
// 1. var声明(函数/全局作用域,可重复声明) var a = 10; var a = 20; // 允许重复声明 console.log(a); // 输出 20 // 2. let声明(块级作用域,不可重复声明) let b = 10; // let b = 20; // 报错:Identifier 'b' has already been declared if (true) { let b = 30; // 块内独立变量,不影响外部 console.log(b); // 输出 30 } console.log(b); // 输出 10 // 3. const声明(常量,不可修改) const c = 100; // c = 200; // 报错:Assignment to constant variable. const obj = { name: "Adobe" }; obj.name = "JavaScript"; // 允许修改引用类型的属性(地址未变) console.log(obj.name); // 输出 JavaScript_)、美元符号($)开头,不能以数字开头。name和Name是两个不同的变量。let、const、if、function等)。userName、totalPrice);MAX_NUM、PI)。javascript
运行
// 错误命名 var 123num = 1; // 数字开头 var let = 2; // 使用关键字 var user-name = 3; // 含非法字符(-) // 正确命名 var num123 = 1; var _userAge = 20; var $price = 99; const MAX_COUNT = 100;var)var声明的变量会被 “提升” 到作用域顶部,但赋值不会提升:
javascript
运行
console.log(x); // 输出 undefined(变量提升,未赋值) var x = 10; console.log(x); // 输出 10let/const)let/const声明的变量,在声明语句之前访问会报错,这就是 “暂时性死区”,避免了提前使用未定义的变量:
javascript
运行
// console.log(y); // 报错:Cannot access 'y' before initialization let y = 20; console.log(y); // 输出 20var/let/const声明的全局变量,前者挂载到window,后两者不挂载)。var声明的变量仅在函数内可访问。let/const声明的变量仅在{}内(如if/for/while块)可访问。javascript
运行
// 全局作用域 var globalVar = "全局var"; let globalLet = "全局let"; function test() { // 函数作用域 var funcVar = "函数内var"; let funcLet = "函数内let"; console.log(globalVar); // 可访问全局变量 if (true) { // 块级作用域 let blockLet = "块内let"; console.log(funcVar); // 可访问函数内变量 } // console.log(blockLet); // 报错:blockLet is not defined(块外不可访问) } test(); console.log(funcVar); // 报错:funcVar is not defined(函数外不可访问)let(可变变量)和const(常量),避免var(作用域不清晰、可重复声明)。let/const有块级作用域和暂时性死区,const声明时必须赋值且不可修改值(引用类型仅地址不可改)。