• export / import 温故而知新


    认知一: 导出的对象被修改,依然会影响原来的对象。

    仔细想想这是理所当然的事(说明导出的依然是对象指向内存的地址,所以通常还需要结合深拷贝使用)

    /**
     export const state = {
     	select: 0
     }
    
     export const logstate = () => {
     	console.log('what the fuck?', state)
     }
     */
    import { state, logstate } from './lib'
    state.select =  110
    console.log('fuckyou', state) // fuckyou { select: 110 }
    logstate()  // what the fuck? { select: 110 }
    

    认知二:无论是 let 还是 const ,导出的变量都无法修改

    /**
    export let val = 0
     */
    import { val } from './lib'
    val = 110 // 报错: "val" is read-only
    

    认知三: import 无法解构 export default {...} 导出的对象,哪怕他真的是导出一个对象!

    我们知道,如果我们用常规的 require 导入 export default {...},其实还有一层 default 的:

    /**
    const state = {
    	select: 0
    }
    
    const logstate = () => {
    	console.log('what the fuck?', state)
    }
    
    export default {
    	state,
    	logstate
    }
     */
    const what = require('./lib');
    console.log(what); // { default: { state: { select: 0 }, logstate: [Function: logstate] } }
    

    而神奇的是,如果使用 Import 就会自动将这一层多余的default移出:

    import what  from './lib'
    console.log(20190111214203, what) // { state: { select: 110 }, logstate: [Function: logstate] }
    

    但尽管如此,我们依然无法使用解构:

    import what  from './lib'
    import { state, logstate }  from './lib'
    console.log(state, logstate) // undefined undefined
    

    如果实在想使用解构,只能用最初的require方法了,但要记得加上 .default 哦:

    const { state, logstate }  = require('./lib').default
    console.log(state, logstate) // { select: 0 } [Function: logstate]
    
  • 相关阅读:
    2021“MINIEYE杯”中国大学生算法设计超级联赛(4)
    Spring Boot从入门到精通(十一)集成Swagger框架,实现自动生成接口文档
    Spring Cloud 从入门到精通(二)集成 Nacos 构建微服务实现服务注册
    Spring Cloud 从入门到精通(一)Nacos 服务中心初探
    Apache HBase 1.7.1 发布,分布式数据库
    DB2 SQL Error: SQLCODE=-668, SQLSTATE=57016错误解决方法
    脱离OBDeploy工具,手工部署OceanBase方法
    剑指Offer26.树的子结构
    剑指Offer21.调整数组顺序使奇数偶数前面
    剑指Offer14-I|LeetCode343.剪绳子|整数拆分
  • 原文地址:https://www.cnblogs.com/CyLee/p/10258565.html
Copyright © 2020-2023  润新知