记录js的声明变量的关键字和map(字典)的认识

本文介绍了JavaScript中var、let和const的区别,强调了变量提升和作用域的概念。同时,详细阐述了Map数据结构,包括其特性、常用方法如set、get、has、delete及遍历方式。最后提到了Map与其他数据结构的转换。

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

1.var

var定义的是全局变量和局部变量,可以省略var,一般情况下不会报错,两者使用看似一样实际上存在着区别,执行代码之后x属性没有被删除,y被删除了

 通过Object.getOwnPropertyDescriptor()获取对象的属性可以发现,有var定义的x的configurable默认是true,没定义的y的configurable默认是false,当configurable为true是则不会被delete删除。

var 声明全局变量举例来说for循环定义的var也可以在循环外使用

tips:变量提升

var声明全局变量会进行代码提升,举例来说var b =2;会分解成var b;b=2;代码解析的时候会将var b;提升到最前面,并且在内存中开辟空间,因为var b没赋值,所以默认为空。因为a没进行var声明,所以变量没有提升,因此会报错。

 let

在ECMAScript6标准中,一个重要的概念就是JavaScript严格模式,需要在最前面加“use strict”

let需要注意的地方:

       let用于作用域块,一个{}就是一个作用域,也就是let声明块级变量,即局部变量

       let在其作用域下面不存在变量提升

       let在其作用域中不能重复声明(函数作用域和块级作用域)

let块级作用域

最外层的代码块不受内层代码块的影响,但如果是var来定义变量则结果会输出为20

 

 const

const用来声明常量,一旦声明,就无法修改,而且必须要初始化,强行修改虽然不报错但也无法修改

 

  const的作用域与let相同,只在声明所在的块级作用域内有效,并且也是和let一样不可以重复进行声明。const是常数变量,即一般在require一个模块的时候用或者定义一些全局常量,一旦定义,无法更改,无法重复赋值。

最后一句话总结,var可以声明全局变量和局部变量可以进行变量提升,let只能声明局部变量,无法进行变量提升,变量所存储的值可以被更改,const声明的是常量,一旦确定就无法修改,也无法重新赋值

 字典(map)

字典就是一种键值对形式储存数据的数据结构。

size属性

size属性返回Map结构的成员总数

 set(key,value)

set方法设置键名key对应的键值为value,然后返回整个Map结构,如果key已经有值,则键值会被更新,否则就新生成该键

 set方法返回的是当前Map对象,可以采用链式写法

 

 get(key)

get方法读取key对应键值,如果没找到key返回undefined

has(key)

has方法返回一个布尔值,表示某个键是否在当前Map对象

 delete(key)

delete方法删除某个键,返回true,如果删除失败,则返回false

clear()

clear方法清除所有成员,没有返回值 

 遍历方法

Map结构原生提供三个遍历器生成函数和一个遍历方法

keys():返回键名的遍历器

values():返回键值的遍历器

entries():返回所有成员的遍历器

forEach():遍历Map的所有成员

注意Map遍历顺序就是插入顺序

map结构的默认遍历器接口(Symbol.iterator属性),就是entries方法

 Map结构转数组结构,比较快速的方法是使用扩展运算符(...

 结合数组的map方法,filter方法,可以实现Map的遍历和过滤(Map本身没有map和filter方法)

 Map中有forEach方法,和数组的forEach方法类似,也可以实现遍历

 forEach方法可以接受第二个参数,用来绑定this,forEach方法的回调函数的this,就指向rep

 Map与其它数据结构的转换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值