JavaScript 3.4 var、let、const

本文详细介绍了JavaScript中的var、let和const三种声明变量的方式,包括它们的作用域、提升、可变性及在循环中的表现。var在全局有效,存在变量提升,容易导致意外;let不允许重复声明,不提升,适用于块级作用域;const声明常量,一旦赋值不可更改,常用于定义不可变的值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、var

1、var在全局有效
{
      var n = 1;
}

console.log(n);

output:1

2、var可以多次赋值

var n = 2
console.log(n);

output:2

3、var存在变量提升

console.log(num);
var num = 1 ;

output:undefined,脚本运行时,num已经存在,但是没有赋值

4、循环
for (var i = 0; i < 10; i++) {
  setTimeout(function(){
    console.log(i);
  },1000)
}

output:十个10
由于i是var声明的,是全局有效的,所以循环里只有一个i,
setTimeout方法是不阻碍主线程运行的
i等于10时,不符合i<10,才开始执行setTimeout方法,
i的值依然是10,所以输出的是10个10

二、let

1、let 声明的变量只在 let 命令所在的代码块内有效
{
  let a = 0;
}
console.log(a)   // 报错 ReferenceError: a is not defined

2、let不能重复声明,不能重复声明,不代表不能多次赋值
let a = 1;
let a = 2;

报错:Uncaught SyntaxError: Identifier 'a' has already been declared

3、不存在变量提升

console.log(o);
let o = 1;
报错:Uncaught ReferenceError: o is not defined

4、循环
for (let j = 0; j < 10; j++) {
  setTimeout(function(){
    console.log(j);
  })
}

output:0123456789

每一次循环j都是一个新的变量

三、const

1、const 声明一个只读变量,声明之后不允许改变。意味着,
一旦声明必须初始化,否则会报错

const a;

没有初始化
报错:Uncaught SyntaxError: Missing initializer in const declaration

2、声明后的值,不允许改变

const num = 1;

const num = 2;
再次赋值时报错
Uncaught SyntaxError: Identifier 'num' has already been declared

const 声明的简单类型变量等同于常量

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值