重学前端
程劭非(winter)
前手机淘宝前端负责人
104095 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 57 讲
开篇词+学习路线+架构图 (3讲)
重学前端
15
15
1.0x
00:00/00:00
登录|注册

JavaScript语法(一):在script标签写export为什么会抛错?

你好,我是 winter,今天我们进入到语法部分的学习。在讲解具体的语法结构之前,这一堂课我首先要给你介绍一下 JavaScript 语法的一些基本规则。

脚本和模块

首先,JavaScript 有两种源文件,一种叫做脚本,一种叫做模块。这个区分是在 ES6 引入了模块机制开始的,在 ES5 和之前的版本中,就只有一种源文件类型(就只有脚本)。
脚本是可以由浏览器或者 node 环境引入执行的,而模块只能由 JavaScript 代码用 import 引入执行。
从概念上,我们可以认为脚本具有主动性的 JavaScript 代码段,是控制宿主完成一定任务的代码;而模块是被动性的 JavaScript 代码段,是等待被调用的库。
我们对标准中的语法产生式做一些对比,不难发现,实际上模块和脚本之间的区别仅仅在于是否包含 import 和 export。
脚本是一种兼容之前的版本的定义,在这个模式下,没有 import 就不需要处理加载“.js”文件问题。
现代浏览器可以支持用 script 标签引入模块或者脚本,如果要引入模块,必须给 script 标签添加 type=“module”。如果引入脚本,则不需要 type。
<script type="module" src="xxxxx.js"></script>
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《重学前端》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(39)

  • 最新
  • 精选
  • 洛克不菲勒
    看了之后好像明白了,但是又好像什么都没学到,是否需要多看几遍?

    作者回复: 读完以后可以自己查阅相关资料,补充自己的能力体系。

    2
    17
  • xwchris
    console.log(foo); if (true) { function foo() {} } 为什么这段代码 我在chrome73中执行得到的是ƒ foo() {}

    作者回复: 老内核和新内核不一样

    3
  • Geek_7e2326
    闭包那边解释的不对吧,闭包应该可以看做一个函数,可以让外部访问函数内部的变量,而不会污染全局。 你说的是访问外部的变量。

    作者回复: 光秃秃的一个论点,没来源没分析,就说我讲错了,我还真不知道该怎么反驳你……

    3
    2
  • Richard
    当你认为你已经掌握了JS,JS会反手给你一巴掌。
    174
  • 以勒
    前面学的宏观任务和微观人物 还记得的同学举个手,点个赞
    122
  • mgxian
    作为一个非前段程序员 看了老师的专栏发现 js 坑真多 各种奇怪的语法和表现 感觉像语言的 bug 一样
    7
    33
  • alue
    这个教程我总感觉支零破碎的,像盲人摸象一样。可能是我的问题吧
    2
    9
  • 让时间说真话
    首先讲了脚本和模块,而这次老师讲的模块补缺我近段时间用模块时的一些疑问,Js的预处理语法让我更加理解了以前经常用到的作用域。感谢winter!!!
    9
  • 阿成
    https://github.com/aimergenge/get-exported-names-via-babel
    1
    7
  • 费马
    能否讲讲为什么导出的无论是基本类型还是引用类型,都会和原模块的变量有绑定关系?
    2
    6
收起评论
显示
设置
留言
39
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部