JS中const、let、var之间的区别

本文详细介绍了JavaScript中const、var和let关键字的使用方法及其区别。const定义不可修改且必须初始化的变量;var定义可修改变量,作用域为整个函数;let用于块级作用域,不同块内可定义同名变量。

const

const定义的变量不可以修改,而且必须初始化

const b = 1;    //正确
const b;    //错误,必须初始化
console.log('函数外const定义b:' + b);/有输出值
//b = 5;
//console.log('函数外修改const定义b:' + b);//无法输出

var

var定义的变量可以修改,如果不初始化会输出undefined,不会报错

var a = 1;
// var a;//不会报错
console.log('函数外var定义a:' + a);//可以输出a=1
function change(){  
    a = 4;
    console.log('函数内var定义a:' + a);//可以输出a=4
}
change();
console.log('函数调用后var定义a为函数内部修改值:' + a);//可以输出a=4

let

let是块级作用域,函数内部使用let定义后,对函数外部无影响

let c = 3;
console.log('函数外let定义c:' + c);//输出c=3
funcion change(){   
    let c = 6;
    console.log('函数内let定义c:' + c);//输出c=6
}
change();
console.log('函数调用后let定义c不受函数内部定义影响:' + c);//输出c=3

附var与let的区别实例代码:

function varTest() {
  var x = 1;
  if (true) {
    var x = 2;  // 同样的变量!
    console.log(x);  // 2
  }
  console.log(x);  // 2
}

function letTest() {
  let x = 1;
  if (true) {
    let x = 2;  // 不同的变量
    console.log(x);  // 2
  }
  console.log(x);  // 1
}

在 JavaScript 中,`const`、`let` 和 `var` 是用于声明变量的关键字,它们在作用域、提升、可变性等方面存在明显区别: - **作用域**: - `var` 具有函数作用域。在函数内部使用 `var` 声明的变量,在整个函数内都可以访问,在函数外部则无法访问。如果在函数外部使用 `var` 声明变量,则该变量具有全局作用域。例如: ```javascript function example() { var x = 10; console.log(x); // 输出 10 } example(); console.log(x); // 报错,x 未定义 ``` - `let` 和 `const` 具有块级作用域。块级作用域由花括号 `{}` 界定,如 `if` 语句、`for` 循环等。在块级作用域内使用 `let` 或 `const` 声明的变量,只能在该块内访问。例如: ```javascript if (true) { let y = 20; const z = 30; console.log(y); // 输出 20 console.log(z); // 输出 30 } console.log(y); // 报错,y 未定义 console.log(z); // 报错,z 未定义 ``` - **变量提升**: - `var` 存在变量提升。变量提升是指在 JavaScript 中,使用 `var` 声明的变量会被提升到当前作用域的顶部,可以在声明之前访问,但此时变量的值为 `undefined`。例如: ```javascript console.log(a); // 输出 undefined var a = 10; ``` - `let` 和 `const` 不存在变量提升。使用 `let` 或 `const` 声明的变量必须先声明后使用,否则会报错,这被称为暂时性死区(TDZ)。例如: ```javascript console.log(b); // 报错,Cannot access 'b' before initialization let b = 20; ``` - **可变性**: - `var` 和 `let` 声明的变量可以重新赋值。例如: ```javascript var num1 = 1; num1 = 2; console.log(num1); // 输出 2 let num2 = 3; num2 = 4; console.log(num2); // 输出 4 ``` - `const` 声明的常量必须在声明时进行初始化,并且一旦初始化后,其引用地址不能被修改。如果 `const` 声明的是对象或数组,可以修改对象的属性或数组的元素,但不能重新赋值为新的对象或数组。例如: ```javascript const PI = 3.14; // PI = 3.1415; // 报错,Assignment to constant variable const obj = { name: 'John' }; obj.name = 'Jane'; console.log(obj.name); // 输出 'Jane' ``` ### 使用建议 - **优先使用 `const`**:声明常量或不需要重新赋值的变量,避免意外修改[^4]。 - **其次使用 `let`**:需要重新赋值的场景(如循环计数器)[^4]。 - **避免使用 `var`**:易导致作用域污染和变量提升问题[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值