JS进阶之路

2024-02-27  本文已影响0人  zbcy0012

【前言】

这里有很多杂项知识,必须的、非必须的、冷门的、有趣的。总之学而有益身心,谓之技多不压身。本文内容来源于网络搜索和个人经验,如有谬误请评论区留言,不胜感激。本文章持续更新。

《严格模式》

除了正常运行模式,ECMAScript 5添加了第二种运行模式:严格模式(strict mode)。顾名思义,这种模式使得 JavaScript 在更严格的条件下运行。
与之相反的非严格模式,被称为sloppy mode,也称之为 正常模式。因为翻译原因,正常模式也被翻译为 —— 马虎模式/稀松模式/懒散模式。但这并不是一个官方术语,但是你会经常见到如上的一些说法,其意义就是指代非严格模式,即正常模式。
设立严格模式的目的,主要有以下几个:

有何变化?

摘自百度搜索
摘自知乎

《ECMAScript简介及特性》

什么是ECMAScript

ECMAScript 是一种由 ECMA国际(前身为欧洲计算机制造商协会)通过 ECMA-262 标准化的脚本程序设计语言。
Ecma国际(Ecma International)是一家国际性会员制度的信息和电信标准组织。1994年之前,名为欧洲计算机制造商协会(European Computer Manufacturers Association)。因为计算机的国际化,组织的标准牵涉到很多其他国家,因此组织决定改名表明其国际性。现名称已不属于首字母缩略字。
与国家政府标准机构不同,Ecma国际是企业会员制的组织。组织的标准化过程比较商业化,自称这种营运方式减少官僚追求效果。
其实 Ecma国际负责了很多标准的制定,比如有如下这些规范。大家可以看到这里面有我们今天的主角,ECMAScript 规范、 C#语言规范、 C++/CLI语言规范等。

ECMAScript 和 JavaScript 的关系

1996 年 11 月,JavaScript 的创造者 Netscape 公司,决定将 JavaScript 提交给标准化组织 ECMA,希望这种语言能够成为国际标准。次年,ECMA 发布 262 号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为 ECMAScript,这个版本就是 1.0 版。
该标准从一开始就是针对 JavaScript 语言制定的,但是之所以不叫 JavaScript,有两个原因。一是商标,Java 是 Sun 公司的商标,根据授权协议,只有 Netscape 公司可以合法地使用 JavaScript 这个名字,且 JavaScript 本身也已经被 Netscape 公司注册为商标。二是想体现这门语言的制定者是 ECMA,不是 Netscape,这样有利于保证这门语言的开放性和中立性。
因此,ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现。

ES6 与 ECMAScript 2015 的关系

ECMAScript 2015(简称 ES2015)这个词,也是经常可以看到的。它与 ES6 是什么关系呢?
2011 年,ECMAScript 5.1 版发布后,就开始制定 6.0 版了。因此,ES6 这个词的原意,就是指 JavaScript 语言的下一个版本。
但是,因为这个版本引入的语法功能太多,而且制定过程当中,还有很多组织和个人不断提交新功能。事情很快就变得清楚了,不可能在一个版本里面包括所有将要引入的功能。常规的做法是先发布 6.0 版,过一段时间再发 6.1 版,然后是 6.2 版、6.3 版等等。
标准委员会最终决定,标准在每年的 6 月份正式发布一次,作为当年的正式版本。接下来的时间,就在这个版本的基础上做改动,直到下一年的 6 月份,草案就自然变成了新一年的版本。这样一来,就不需要以前的版本号了,只要用年份标记就可以了。
因此,ES6 既是一个历史名词,也是一个泛指,含义是 5.1 版以后的 JavaScript 的下一代标准,涵盖了 ES2015、ES2016、ES2017 等等,而 ES2015 则是正式名称,特指该年发布的正式版本的语言标准。
摘自知乎

《CommonJs规范》

【规范定义】
每一个文件是一个模块,有自己的作用域
在模块内部的module变量代表模块本身
module.exports属性代表模块对外接口

【require规则】
/表示绝路径,./表示相对于当前文件的路径
支持js、json、node扩展名,不写就依次尝试
不写路径名就认为是build-in模块或者各级node_modules内第三方模块

【require特性】
module被加载的时候执行,加载后缓存;
一旦出现模块被循环加载,就只输出已经执行的部分,还没有执行的部分就不会输出
摘自知乎

《CommonJS 和 ES的区别》

1. 语法差异

2. 运行时加载和静态加载

3. 浏览器支持

4. 默认导出

5. 导入方式

6. 导入模块成员的方式

7. 循环依赖处理

综上所述,CommonJS主要是在服务器端使用,而ES Modules是现代浏览器和Node.js中推荐的模块系统,具有更好的静态分析和性能优势。随着浏览器和Node.js的发展,ES Modules逐渐取代了CommonJS的地位。
摘自知乎

《.mjs文件和普通.js文件的区别》

【.mjs文件特点】

.mjs文件更像是一个现代化的es6程序,它已经成为了加快javascript web应用性能和保证可维护性的一个重要工具。

上一篇 下一篇

猜你喜欢

热点阅读