【JS】具名导入是解构吗

前言

下面两个js实现了暴露和导入功能

aa.js

export let n = 1
export const increase = () => {
  n++
}

bb.js

import { n, increase } from "./aa.js"
console.log(n, increase)

乍一看{ name, sayHello }写法和JS的解构写法一致,那么具名导入是解构吗,下文分析一下。

分析

尝试修改n

import { n, increase } from "./aa.js"

console.log(n) // 1
increase()
console.log(n) // 2

模拟将导入方式变为JS解构

const obj = {
  n: 1,
  increase() {
    this.n++
  },
}
const { n, increase } = obj

console.log(n) // 1
increase()
console.log(n) // 1

可以发现,二者打印结果并不一致,所以得出结论:具名导入并不是解构。

总结

解构全称解构赋值,是将值从对象中解构并赋值给新变量,新变量有自己的存储空间,所以对象中的变量即使变化了,也不会影响新变量,可以理解为新变量的初始值只是解构那一瞬间对象中的值。

具名导入则不同,它并不会为变量开辟新空间,而只是引用了对象中的值,所以当对象发生改变时,该值也会随之改变。

所以具名导入并非解构赋值,需要区分二者。

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

田本初

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值