zoukankan      html  css  js  c++  java
  • 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]
    
  • 相关阅读:
    Java调用R环境配置问题:Cannot find JRI native library!
    在odoo 10.0配置文件中修改ip地址
    WordPress国外开源主题Enigma h1、h2、h3……标题不显示的解决办法
    ubuntu下编译为知笔记
    ubuntu linux 使用什么下载工具
    通过修改qt设置,解决LINK : fatal error LNK1104: 无法打开文件“kernel32.lib”
    [DONE]ReferenceError: WebSocket is not defined pomelo
    [DONE]pomelo npm-install 出现 AttributeError: 'module' object has no attribute 'script_main'
    finished running <my app>” on the targeted device
    c++中64位int与字符串的转换
  • 原文地址:https://www.cnblogs.com/CyLee/p/10258565.html
Copyright © 2011-2022 走看看