JS中的var、let、constant

JS中的var、let、constant

JavaScript 有三种声明变量方式:var let constant 。
全局变量:全局有效,在{}内外皆有效。
局部变量:函数内部定义的变量,仅在函数内部有效,函数结束即被销毁。

var

1.作用域

函数内使用 var 声明的变量只能在函数内容访问,如果不使用 var 则是全局变量。
使用var关键字声明的全局作用域变量属于window对象。
2.重置变量
var 可以重置变量

var x = 2;
 
// x 为 2
 
var x = 3;
 
// 现在 x 为 3

循环作用域

var i = 5;
for (var i = 0; i < 10; i++) {
    // 一些代码...
}
// 这里输出 i 为 10

3.变量提升
var变量可以先使用后定义

let

1 作用域
let 声明的变量只在 let 命令所在的代码块内有效。

{ 
    let x = 2;
}
// 这里不能使用 x 变量

let声明的变量只在声明的{}中有效,{}无效。

var x = 10;
// 这里输出 x 为 10
{ 
    let x = 2;
    // 这里输出 x 为 2
}
// 这里输出 x 为 10

循环作用域:

let i = 5;
for (let i = 0; i < 10; i++) {
    // 一些代码...
}
// 这里输出 i 为 5

使用 let 关键字声明的全局作用域变量不属于 window 对象:

2 重置变量
let 关键字在不同作用域,或不同块级作用域中是可以重新声明赋值的:

let x = 2;       // 合法

{
    let x = 3;   // 合法
}

{
    let x = 4;   // 合法
}

在相同作用域中,不可以使用let 对let var 声明的变量进行重新赋值,不能使用 var 关键字来重置 let 关键字声明的变量。

3 变量提升
let 不可以进行变量提升,只能先定义后使用。

constant

1 作用域
constant用于声明一个或多个变量,声明时必须进行初始化,且初始化后值不可再修改,与let相似都是块级作用域。
2 重置变量
在相同的作用域和块级作用域中,不可以使用constant 对constant let var 重新赋值。
在不同的作用域和块级作用域中,可以使用constant 重新赋值的.

const x = 2;       // 合法

{
    const x = 3;   // 合法
}

{
    const x = 4;   // 合法
}

使用 const 定义的对象或者数组,其实是可变的。下面的代码并不会报错:

// 创建常量对象
const car = {type:"Fiat", model:"500", color:"white"};
 
// 修改属性:
car.color = "red";
 
// 添加属性
car.owner = "Johnson";

const car = {type:“Fiat”, model:“500”, color:“white”};
car = {type:“Volvo”, model:“EX60”, color:“red”}; // 错误

3 变量提升
constant 定义的变量必须先声明后使用

总结

使用var关键字声明的全局作用域变量属于window对象。

使用let关键字声明的全局作用域变量不属于window对象。

使用var关键字声明的变量在任何地方都可以修改。

在相同的作用域或块级作用域中,不能使用let关键字来重置var关键字声明的变量。

在相同的作用域或块级作用域中,不能使用let关键字来重置let关键字声明的变量。

let关键字在不同作用域,或不用块级作用域中是可以重新声明赋值的。

在相同的作用域或块级作用域中,不能使用const关键字来重置var和let关键字声明的变量。

在相同的作用域或块级作用域中,不能使用const关键字来重置const关键字声明的变量

const 关键字在不同作用域,或不同块级作用域中是可以重新声明赋值的:

var关键字定义的变量可以先使用后声明。

let关键字定义的变量需要先声明再使用。

const关键字定义的常量,声明时必须进行初始化,且初始化后不可再修改。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值