1.JS学习篇-var,let,const

基本概念:

在js中,var,let,const是用于声明变量的关键字。

var

函数作用域:使用`var`声明的变量具有函数的作用域,意味着函数内部声明的`var`变量,函数外部是不可访问的。而在函数外部声明的变量,函数内部是可以访问的。

变量提升:`var`变量存在变量提升现象,即在变量声明之前访问该变量,不会导致错误,只会返回`undefined`。

function example () {
    console.log(a) // undefined
    var a = 88
}
example()
let

块级作用域:let声明的变量具有块级作用域,常见的块级作用域包括if语句块,for循环块,while循环块等。

不存在函数声明的提升:在let声明变量之前访问会导致错误。

if (true) {
    let b = 20
}
console.log(b) // 错误,b没有定义
const

常量:const声明的是一个常量,其值在初始化之后,不可以被赋值

块级作用域:和let一样,具有块级作用域

对于对象和数据类型的const变量,其属性或元素是可以修改的

const obj = {name: 'wikiHong'}
obj.name = 'tuantuan' // 可以修改属性

const arr = [1, 2, 3]
arr.push(1108) // 可以修改数组的元素
 

总结: let 和 const 是为了改进var 的一些缺陷和提供更清晰的作用域和变量而产生的。

var的缺陷如下:

1.作用域问题:函数作用域导致变量的可见性和可访问性范围较宽泛,可能会造成意外被修改或覆盖的情况。

function (var i = 0; i < 6; i++) {



}

console.log(i) // 5, i在循环外仍可访问

2.变量提升:变量提升可能会导致逻辑混乱和难以理解的代码。在代码块中,变量可以在声明之前被使用,只是其值为undefined。

console.log(b)
var b = 33

3.重复声明:在一个作用域内,使用var可以重复声明同一个变量,不会报错,后面的声明会覆盖前面的声明。

var a = 6
var a = 8 

以上缺陷导致代码的可读性和可维护性降低。

使用场景:

coonst:

1. 当你知道一些变量的值在初始化之后,不会改变,应当使用const。如配置项,常量值,固定的api端口等

const API_URL= 'https://example.com/api'
const PI = '3.1415926'

2. 对于引用类型(对象或数组),为了确保该变量始终指向同一个对象或数组时,但可以修改其属性或者元素,也用const。

const person = {name: 'pingbaobei'}
person.name = 'tuantuan'
let:

当一个变量在其作用域里面可能会修改时,使用let。如for循环体内,if条件语句内。还有咱们不确定变量值是否会被修改的时候,也有用let。

宗旨:优先使用const,只有在变量的值需要改变的时候,用let。

底层原理:

var,const,let底层原理涉及到变量的存储、作用域的管理以及内存分配等方面。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值