export / import 温故而知新
认知一: 导出的对象被修改,依然会影响原来的对象。
仔细想想这是理所当然的事(说明导出的依然是对象指向内存的地址,所以通常还需要结合深拷贝使用)
/**
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 温故而知新的更多相关文章
- 程序间数据共享与传递:EXPORT/IMPORT、SAP/ABAP Memory
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- PL/SQL developer export/import (转)
export/import图标为灰色:原因:相关应用程序没有关联菜单栏 --> Tools --> Import Tables... --> Oracle Import Export ...
- security Export/import
export [-k keychain] [-t type] [-f format] [-w] [-p format] [-P passphrase] [-o outfile] Export one ...
- 自学Zabbix10.1 Configuration export/import 配置导入导出
自学Zabbix10.1 Configuration export/import 配置导入导出 通过导入/导出zabbix配置文件,我们可以将自己写好的模板等配置在网络上分享,我们也可以导入网络上分享 ...
- (转)关于ES6的 模块功能 Module 中export import的用法和注意之处
关于ES6的 模块功能 Module 中export import的用法和注意之处 export default 的用法 export default命令用于指定模块的默认输出.显然,一个模块只能有一 ...
- docker 学习(六) export/import/load/save images
export/import 是一对命令: load/save是一对命令 一: export / import使用 1: 查看镜像: docker ps -a 2:导出镜像:docker ex ...
- docker save/load以及export/import使用测试
对于有些环境需要离线安装的情况,docker以及docker容器都需要能够支持离线安装,对于docker离线安装,比较简单,按照https://www.cnblogs.com/qq931399960/ ...
- 【ABAP系列】SAP ABAP如何在调试查看EXPORT/IMPORT 内存数据
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP如何在调试查看E ...
- 【DB宝50】Oracle异构平台迁移之完全可传输导出导入(Full Transportable Export & Import)
目录 一.简介 1.1.使用场景 1.2.限制条件 二.完全可传输操作步骤 三.案例演示 3.1.环境 3.2.源库操作 3.2.1.将需要传输的用户表空间设置为RO状态 3.2.2.使用Data P ...
随机推荐
- Django2.0 path与Django1.x版本url正则匹配问题
2.0内的path匹配正则时候无效, 导入re_path即可匹配正则
- PhpStorm 中切换PHP版本
PhpStorm 中默认的 PHP 版本是 PHP 5.4 ,PhpStorm 会以该版本对编辑器中的PHP文件进行自动校验.EX:PHP文件中,使用了 PHP 5.4 版本以上的新特性,由于 Php ...
- routing路由模式
一:介绍 1.模式 2.应用场景 如果exchangge与队列中的key相同,消息就发送过去. 这个就是需要将交换机与队列增加key. 3.路由类型 上节课的订阅模式中的路由类型是Fanout. 这篇 ...
- 061 hive中的三种join与数据倾斜
一:hive中的三种join 1.map join 应用场景:小表join大表 一:设置mapjoin的方式: )如果有一张表是小表,小表将自动执行map join. 默认是true. <pro ...
- Unity 之 中文乱码
更改 C#脚本的编码格式: 文件 -> 高级保存选项 -> Unicode
- (数据分析)第02章 Python语法基础,IPython和Jupyter Notebooks.md
第2章 Python语法基础,IPython和Jupyter Notebooks 当我在2011年和2012年写作本书的第一版时,可用的学习Python数据分析的资源很少.这部分上是一个鸡和蛋的问题: ...
- GreenDao与ReactiveX的完美搭配
转载请注明出处:http://www.cnblogs.com/cnwutianhao/p/6719380.html 作为Android开发者,一定不会对 GreenDao 和 ReactiveX 陌生 ...
- 极客无极限 一行HTML5代码引发的创意大爆炸
摘要:一行HTML5代码能做什么?国外开发者Jose Jesus Perez Aguinaga写了一行HTML5代码的文本编辑器.这件事在分享到Code Wall.Hacker News之后,引起了众 ...
- {}+[]与console.log({}+[])结果不同?从JavaScript的大括号谈起
看到这样一个问题:为什么直接在控制台运行{} + []和用console.log({} + [])输出,两者结果不一样? 于是乎打开chrome的控制台运行了一下: 为什么结果会这样呢?不得已学习一下 ...
- BZOJ.4767.两双手(组合 容斥 DP)
题目链接 \(Description\) 棋盘上\((0,0)\)处有一个棋子.棋子只有两种走法,分别对应向量\((A_x,A_y),(B_x,B_y)\).同时棋盘上有\(n\)个障碍点\((x_i ...