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

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

/**
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]

最新文章

  1. C#+ArcEngine10.0+SP5实现鼠标移动动态显示要素属性信息
  2. angularjs中ng-controller中绑定对象
  3. Oracle 新手问答
  4. oracle start with connect by prior 递归查询
  5. poj3692 最大点权独立集/最大独立集
  6. OC10_数组的内存管理
  7. canvas总结:元素大小与绘图表面大小
  8. HMM模型详解
  9. Servlet、SPringMVC、Struts等防止表单反复提交的多种处理方法
  10. NodeJS+Express+MongoDB 简单个人博客系统【Study笔记】
  11. 改造继续之eclipse集成tomcat开发spring mvc项目配置一览
  12. Linux-pthread如何设置线程的优先级
  13. vue自定义指令用法总结及案例
  14. xpath路径前可用方法测试
  15. 《Python》hashlib模块、configparser模块、logging模块
  16. (十一) 整合spring cloud云架构 - SSO单点登录之OAuth2.0登录流程(2)
  17. jQuery队列(三)
  18. time out 超时
  19. [PHP] 超全局变量$_FILES上传文件
  20. 第三百零四节,Django框架,urls.py模块,views.py模块,路由映射与路由分发以及逻辑处理——url控制器

热门文章

  1. 【Java】 剑指offer(4) 替换空格
  2. [OpenCV-Python] OpenCV 中视频分析 部分 VI
  3. Jackson ObjectMapper readValue过程
  4. 细说Vue作用域插槽,匹配应用场景。
  5. C# 判断输入的字符串是否只包含数字和英文字母
  6. 利用SQL为Code128码添加起始符和休止符
  7. 安卓工作室 android studio 谷歌账号 登录
  8. BZOJ2366 : 多重历史
  9. 深入一下Django的用户认证和cache
  10. 将文件打包成apk