js变量的重复声明

var的重复声明

1.使用var语句多次声明一个变量是合法的,不会造成任何错误.

2.如果重复使用的一个声明有一个初始值,那么它担当的不过是一个赋值语句的角色.

3.如果重复使用的一个声明没有一个初始值,那么它不会对原来存在的变量有任何的影响.
例:

var a = 100;
function fn() {
	alert(a); //undefined 变量提升
	var a = 200;
	alert(a); //200
}
fn();
alert(a); //100
var a;	//情况3
alert(a); //100
var a = 300;	//情况2
alert(a); //300

let的重复声明

let重复声明会报错

### JavaScript声明变量的方法 在JavaScript中,声明变量的方式有三种主要方法:`var`、`let`和`const`。这些关键字的引入使得JavaScript变量声明更加灵活且功能强大[^1]。 #### 1. 使用 `var` 声明变量 `var` 是最早用于声明变量的关键字,具有函数作用域或全局作用域。如果在函数外部使用 `var` 声明变量,则该变量将成为全局变量,并挂载到 `window` 对象上(在浏览器环境中)。例如: ```javascript var a = 100; console.log(a, window.a); // 100 100 ``` 需要注意的是,`var` 声明变量存在变量提升的问题,即变量可以在声明之前被访问,但此时值为 `undefined`[^2]。 #### 2. 使用 `let` 声明变量 `let` 是ES6新增的关键字,用于声明块级作用域的变量。与 `var` 不同,`let` 声明变量不会挂载到 `window` 对象上,并且解决了变量提升的问题。以下是一个示例: ```javascript { let a = 1; } console.log(a); // error: a is not defined ``` 此外,`let` 允许在同一作用域内多次声明不同的变量,但在同一作用域内重复声明同一个变量会导致错误[^5]。 #### 3. 使用 `const` 声明常量 `const` 同样是ES6新增的关键字,用于声明常量。与 `let` 类似,`const` 也具有块级作用域,但要求必须在声明时初始化,并且不能重新赋值。例如: ```javascript const c = 1; console.log(c); // 1 c = 2; // TypeError: Assignment to constant variable. ``` 需要注意的是,`const` 并不意味着值本身不可变,而是指变量引用的地址不可变。对于对象或数组等复杂数据类型,其内容仍然可以修改[^3]。 ```javascript const obj = {}; obj.key = "value"; // 合法操作 console.log(obj); // { key: "value" } ``` ### 总结 - `var` 是传统的变量声明方式,具有函数作用域和全局作用域,但存在变量提升等问题。 - `let` 提供了块级作用域,避免了变量提升问题,适合大多数场景。 - `const` 用于声明常量,要求声明时初始化且不能重新赋值,适用于值不应改变的场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值