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

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

import * as x from "./a.js"
import {a as x, modify} from "./a.js"
import x from "./a.js"
指令序言的规定
"use strict"
class声明
function声明
var声明
异步生成器函数体
生成器函数体
异步函数体
普通函数体
export default
导出变量的方式
带from的import
直接import一个模块
type="module"用于引入模块
只能由JavaScript代码用import引入执行
可以由浏览器或者node环境引入执行
指令序言机制
预处理
函数体
export声明
import声明
script标签
模块
脚本
JavaScript语法

该思维导图由 AI 生成,仅供参考

你好,我是 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
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

JavaScript语法的基本规则包括脚本和模块的区别,以及在使用script标签引入模块或脚本时需要注意的type属性设置。文章详细介绍了import声明和export声明的用法,包括直接import模块、带from的import以及export的不同用法。此外,还介绍了函数体的四种类型,以及JavaScript语法的全局机制:预处理和指令序言。文章还讨论了var声明、function声明和class声明在不同作用域中的行为,以及指令序言机制的使用。总的来说,本文内容涵盖了JavaScript语法的基本概念和一些高级特性,适合读者快速了解JavaScript语法的一些重要知识点。文章通过具体的例子和解释,帮助读者理解JavaScript语法的复杂性和一些设计原则,为读者提供了深入学习JavaScript语法的基础。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《重学前端》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(39)

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

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

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

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

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

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

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