Replies: 0 comments 5 replies
-
JavaScript 的历史和演变
JS 曾多次更名
标准化 JavaScript
JavaScript 有两个标准:
Ecma 技术委员会 39 (TC39)TC39 是发展 JavaScript 的委员会。其成员包括以下公司: TC39 提案流程
所以 TC39 的提案详情可参阅为什么我们不能通过删除怪癖和过时的功能来清理 JavaScript?偶尔出现的一个想法是通过删除旧功能和怪癖来清理 JavaScript。虽然这个想法的吸引力是显而易见的,但它也有明显的缺点。 假设我们创建了一个不向后兼容的新版本的 JavaScript 并修复了它的所有缺陷。结果,我们会遇到以下问题: JavaScript 引擎变得臃肿:它们需要同时支持新旧版本。 IDE 和构建工具等工具也是如此。 程序员需要了解并不断意识到版本之间的差异。 您可以将所有现有代码库迁移到新版本(这可能需要大量工作)。或者你可以混合版本,重构变得更加困难,因为你不能在不更改的情况下在版本之间移动代码。 你必须以某种方式指定每段代码——无论是文件还是嵌入网页的代码——它是用什么版本编写的。每个可以想象的解决方案都有优点和缺点。例如,严格模式(strict mode)是 ES5 的一个稍微干净的版本。它之所以不受欢迎的原因之一是:通过文件或函数开头的指令选择加入是一件很麻烦的事情。 解决方法是什么呢?
|
Beta Was this translation helpful? Give feedback.
-
常见问题解答:JavaScriptJavaScript 参考资料
JavaScript 功能支持表
为什么 JavaScript 经常无声无息地失败?例如 // 如果运算符的操作数没有合适的类型,它们会根据需要进行转换
> '3' * '5'
15
// 如果计算失败,会得到一个错误值,而不是异常
> 1 / 0
Infinity 静默失败的原因是历史性的:JavaScript 直到 ECMAScript 3 才出现异常。从那时起,它的设计者就试图避免静默失败。 如何快速尝试一段 JavaScript 代码?
打印带有替换的字符串
|
Beta Was this translation helpful? Give feedback.
-
使用 JavaScript: 大局使用 JavaScript 的两个平台
浏览器和 Node.js 的结构
扩展阅读 |
Beta Was this translation helpful? Give feedback.
-
JavaScript 语法概述基本结构(Basic constructs)注释(Comments)// 单行注释 single-line comment
/*
多行注释
Comment withmultiple lines
*/ 原始值(Primitive (atomic) values)
断言(Assertions)断言描述了计算结果的预期,如果这些预期不正确,则抛出异常。 箭头函数(Arrow function expressions)箭头函数的主体是一个代码块(code block)或表达式(expression) // 代码块
(a, b) => { return a + b }
// 表达式
(a, b) => a + b 模块(Modules)// file-tools.mjs
export function isTextFilePath(filePath) {
return filePath.endsWith('.txt');
} // main.mjs
// 将整个模块导入为命名空间对象 `path`
import * as path from 'path';
// 导出单个模块
import { isTextFilePath } from './file-tools.mjs'; 异常处理(Exception handling)
try {
try {
throw new Error("oops");
}
catch (ex) {
console.error("inner", ex.message);
throw ex;
}
finally {
console.log("finally");
}
}
catch (ex) {
console.error("outer", ex.message);
}
// 输出:
// inner oops
// finally
// outer oops Casing styles连接单词的常见大小写样式
一般情况下,JavaScript 使用驼峰式大小写,常量除外。
如果参数的名称以下划线开头(或者是下划线),则表示未使用此参数 arr.map((_x, i) => i) 如果对象的属性名称以下划线开头,则该属性被认为是私有的 class ValueWrapper {
constructor(value) {
this._value = value;
}
}
|
Beta Was this translation helpful? Give feedback.
-
目录 (Table of contents)
I BACKGROUND
II FIRST STEPS
III VARIABLES AND VALUES
IV PRIMITIVE VALUES
undefined
andnull
V CONTROL FLOW AND DATA FLOW
eval()
,new Function()
(advanced)VI MODULARITY
VII COLLECTIONS
Array
)Map
)WeakMap
) (advanced)Set
)WeakSet
) (advanced)VIII ASYNCHRONICITY
IX MORE STANDARD LIBRARY
RegExp
)Date
)JSON
)Beta Was this translation helpful? Give feedback.
All reactions