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

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

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

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

/**
export let val = 0
*/
import { val } from './lib'
val = // 报错: "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(, 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]

export / import 温故而知新的更多相关文章

  1. 程序间数据共享与传递:EXPORT/IMPORT、SAP/ABAP Memory

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  2. PL/SQL developer export/import (转)

    export/import图标为灰色:原因:相关应用程序没有关联菜单栏 --> Tools --> Import Tables... --> Oracle Import Export ...

  3. security Export/import

    export [-k keychain] [-t type] [-f format] [-w] [-p format] [-P passphrase] [-o outfile] Export one ...

  4. 自学Zabbix10.1 Configuration export/import 配置导入导出

    自学Zabbix10.1 Configuration export/import 配置导入导出 通过导入/导出zabbix配置文件,我们可以将自己写好的模板等配置在网络上分享,我们也可以导入网络上分享 ...

  5. (转)关于ES6的 模块功能 Module 中export import的用法和注意之处

    关于ES6的 模块功能 Module 中export import的用法和注意之处 export default 的用法 export default命令用于指定模块的默认输出.显然,一个模块只能有一 ...

  6. docker 学习(六) export/import/load/save images

    export/import 是一对命令:   load/save是一对命令 一: export / import使用 1:  查看镜像:  docker ps -a 2:导出镜像:docker  ex ...

  7. docker save/load以及export/import使用测试

    对于有些环境需要离线安装的情况,docker以及docker容器都需要能够支持离线安装,对于docker离线安装,比较简单,按照https://www.cnblogs.com/qq931399960/ ...

  8. 【ABAP系列】SAP ABAP如何在调试查看EXPORT/IMPORT 内存数据

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP如何在调试查看E ...

  9. 【DB宝50】Oracle异构平台迁移之完全可传输导出导入(Full Transportable Export & Import)

    目录 一.简介 1.1.使用场景 1.2.限制条件 二.完全可传输操作步骤 三.案例演示 3.1.环境 3.2.源库操作 3.2.1.将需要传输的用户表空间设置为RO状态 3.2.2.使用Data P ...

随机推荐

  1. Django2.0 path与Django1.x版本url正则匹配问题

    2.0内的path匹配正则时候无效, 导入re_path即可匹配正则

  2. PhpStorm 中切换PHP版本

    PhpStorm 中默认的 PHP 版本是 PHP 5.4 ,PhpStorm 会以该版本对编辑器中的PHP文件进行自动校验.EX:PHP文件中,使用了 PHP 5.4 版本以上的新特性,由于 Php ...

  3. routing路由模式

    一:介绍 1.模式 2.应用场景 如果exchangge与队列中的key相同,消息就发送过去. 这个就是需要将交换机与队列增加key. 3.路由类型 上节课的订阅模式中的路由类型是Fanout. 这篇 ...

  4. 061 hive中的三种join与数据倾斜

    一:hive中的三种join 1.map join 应用场景:小表join大表 一:设置mapjoin的方式: )如果有一张表是小表,小表将自动执行map join. 默认是true. <pro ...

  5. Unity 之 中文乱码

    更改 C#脚本的编码格式: 文件 -> 高级保存选项 -> Unicode

  6. (数据分析)第02章 Python语法基础,IPython和Jupyter Notebooks.md

    第2章 Python语法基础,IPython和Jupyter Notebooks 当我在2011年和2012年写作本书的第一版时,可用的学习Python数据分析的资源很少.这部分上是一个鸡和蛋的问题: ...

  7. GreenDao与ReactiveX的完美搭配

    转载请注明出处:http://www.cnblogs.com/cnwutianhao/p/6719380.html 作为Android开发者,一定不会对 GreenDao 和 ReactiveX 陌生 ...

  8. 极客无极限 一行HTML5代码引发的创意大爆炸

    摘要:一行HTML5代码能做什么?国外开发者Jose Jesus Perez Aguinaga写了一行HTML5代码的文本编辑器.这件事在分享到Code Wall.Hacker News之后,引起了众 ...

  9. {}+[]与console.log({}+[])结果不同?从JavaScript的大括号谈起

    看到这样一个问题:为什么直接在控制台运行{} + []和用console.log({} + [])输出,两者结果不一样? 于是乎打开chrome的控制台运行了一下: 为什么结果会这样呢?不得已学习一下 ...

  10. BZOJ.4767.两双手(组合 容斥 DP)

    题目链接 \(Description\) 棋盘上\((0,0)\)处有一个棋子.棋子只有两种走法,分别对应向量\((A_x,A_y),(B_x,B_y)\).同时棋盘上有\(n\)个障碍点\((x_i ...