您认为您真正了解多少 JavaScript?您可能知道如何编写函数、理解简单的算法,甚至可以编写类。但你知道什么是类型化数组吗?
您现在不需要了解所有这些概念,但您最终会在以后的职业生涯中需要它们。这就是为什么我建议为此列表添加书签,因为您很可能会遇到这些主题之一,然后您将需要一个教程来完全理解它。
调用堆栈是解释器(如 Web 浏览器中的 JavaScript 解释器)跟踪其在调用多个函数的脚本中的位置的机制 - 当前正在运行什么函数以及从该函数内调用什么函数等。
除对象之外的所有类型都定义不可变值(即无法更改的值)。例如(与 C 不同),字符串是不可变的。我们将这些类型的值称为“原始值”。
分配有非原始值的变量将获得对该值的引用。该引用指向该对象在内存中的位置。变量实际上并不包含值。
-来源
类型强制意味着当运算符的操作数是不同类型时,其中一个操作数将转换为另一个操作数类型的“等效”值。
JavaScript 有两种视觉上相似但又非常不同的方法来测试相等性。您可以使用 == 或 === 来测试相等性。
做出这种区分很重要,因为表达式可以像语句一样工作,这就是为什么我们也有表达式语句。但另一方面,陈述不能像表达式一样起作用。
做出这种区分很重要,因为表达式可以像语句一样工作,这就是为什么我们也有表达式语句。但另一方面,陈述不能像表达式一样起作用。
函数中经常使用的编码模式之一有一个奇特的名字:立即调用函数表达式。或者更广为人知的名称为 IIFE,发音为“iffy”。
动图
“JavaScript 是如何实现异步和单线程的?” 简而言之,JavaScript 语言是单线程的,异步行为不是 JavaScript 语言本身的一部分,而是构建在浏览器(或编程环境)中的核心 JavaScript 语言之上,并通过浏览器 API 进行访问。
我们可能决定不立即执行某个函数,而是在稍后的某个时间执行。这就是所谓的“安排通话”。
为 Web 编写代码有时感觉有点神奇,因为开发人员编写一系列字符,然后像魔术一样,这些字符在浏览器中变成具体的图像、文字和操作。了解技术可以帮助开发人员更好地调整他们作为程序员的技能。
好吧,从技术上来说,对于计算机来说,一切都归结为 1 和 0。它不使用数字、字符或字符串进行操作,它仅使用二进制数字(位)。这个解释的简短版本是一切都以二进制形式存储。然后计算机使用UTF-8等编码将保存的位组合映射为字符、数字或不同的符号(ELI5版本)。
文档对象模型(通常称为 DOM)是使网站具有交互性的重要组成部分。它是一个允许编程语言操作网站的内容、结构和风格的接口。JavaScript 是连接到 Internet 浏览器中 DOM 的客户端脚本语言。
JavaScript 是一种基于原型的语言,这意味着对象属性和方法可以通过具有克隆和扩展能力的通用对象来共享。这称为原型继承,与类继承不同。
这些函数对于每个 JavaScript 开发人员都非常重要,并且几乎在每个 JavaScript 库或框架中都会使用。
每个 JavaScript 对象都有一个原型。JavaScript 中的所有对象都从其原型继承其方法和属性。
对于有基于类的语言(如 Java 或 C++)经验的开发人员来说,JavaScript 有点令人困惑,因为它是动态的,并且本身不提供类实现(class 关键字是在 ES2015 中引入的,但只是语法糖,JavaScript 仍然是原型-基于)。
Object.create 方法是 JavaScript 中创建新对象的方法之一。
即使您不知道什么是函数式编程,您也可能一直在使用map、filter和reduce,因为它们非常有用,并且允许您编写更清晰的逻辑,从而使您的代码不再那么糟糕。
我们的许多错误都根源于 IO 相关、数据突变、带有副作用的代码。这些问题遍布我们的代码库,例如接受用户输入、通过 http 调用接收意外响应或写入文件系统等。不幸的是,这是一个我们应该习惯面对的残酷现实。或者是吗?
闭包是捆绑在一起(封闭)的函数及其周围状态(词法环境)的引用的组合。换句话说,闭包使您可以从内部函数访问外部函数的作用域。在 JavaScript 中,每次创建函数时都会创建闭包。
JavaScript 可以接受高阶函数。除了其他特性之外,这种处理高阶函数的能力使 JavaScript 成为非常适合函数式编程的编程语言之一。
将这篇文章视为一系列学习练习。这些示例旨在让您思考 - 如果我做得正确,也许可以稍微扩展您对函数式编程的理解。
Generator 对象由生成器函数返回,它同时符合可迭代协议和迭代器协议。
Promise 对象表示异步操作的最终完成(或失败)及其结果值。
有一种特殊的语法可以以更舒适的方式处理 Promise,称为“async/await”。它非常容易理解和使用。
JavaScript 每天都在发展。随着 React、Angular、Vue、NodeJS、Electron、React Native 等框架和平台的快速发展,在大型应用程序中使用 javascript 已变得相当普遍。
“什么是大 O 表示法?” 对于开发人员来说,这是一个非常常见的面试问题。简而言之,它是算法运行时间取决于输入多长时间的数学表达式,通常谈论最坏的情况。
在数学和计算机科学中,算法是明确定义的指令的有限序列,通常用于解决一类特定问题或执行计算。
类继承是一个类扩展另一个类的一种方式,因此我们可以在现有功能的基础上创建新功能。
每个开发人员都努力编写可维护、可读和可重用的代码。随着应用程序变得越来越大,代码结构变得更加重要。事实证明,设计模式对于解决这一挑战至关重要——为特定情况下的常见问题提供组织结构。
函数组合是一种组合多个简单函数来构建更复杂函数的机制。
编写干净、易理解和可维护的代码是每个开发人员都必须掌握的一项技能。