Skip to content
On this page

Studying from the Inside(从内部学习)

从外面学习

研究我们的 JavaScript 世界的一种方法是从外部研究它

我们可能会专注于模拟我们的世界——一个 JavaScript 引擎——是如何“真正”工作的。例如,我们可能会了解到这个文本字符串——我们世界中的一个值——是存储在硅芯片中的字节序列。

这种方法将我们的注意力集中在人和计算机的物理世界上。我们的方法不同。

比如我们去阅读JS的引擎如何执行的,计算机如何分配内存的等等

从内部学习

我们将从内部研究我们的世界。将自己的精神转移到 JavaScript 世界中,并站在我旁边。我们将观察我们的宇宙法则,并像物理宇宙中的物理学家一样进行实验。

我们将了解我们的 JavaScript 世界,而无需考虑它是如何实现的。这类似于物理学家讨论恒星的属性而不质疑*物理*世界是否真实。没关系!无论我们是在研究物理世界还是 JavaScript 世界,我们都可以用它们自己的术语来描述它们。

我们的心智模型不会试图解释一个值是如何在计算机的内存中表示的。答案一直在变化!当您的程序运行时,答案甚至会发生变化。如果你听过关于 JavaScript 如何“真正”表示内存中的数字、字符串或对象的简单解释,那很可能是错误的。

对我们来说,每个字符串都是一个值——不是“指针”或“内存地址”——一个在我们的宇宙中,一个值就足够了。 不要让“记忆细胞”和其他低级隐喻分散您构建 JavaScript 的准确高级心智模型的注意力。反正都是乌龟!

如果您来自较低级别的语言,请抛开您对“通过引用传递”、“在堆栈上分配”、“在写入时复制”等的直觉。这些关于计算机如何工作的模型通常使人们更难以对 JavaScript 中可以发生或不能发生的事情充满信心。我们将查看一些较低级别的细节,但只关注真正重要的地方。它们可以作为我们心智模型的补充,而不是它的基础。

我们心智模型的基础是价值观。 每个值都属于一个类型。原始值是不可变的。我们可以使用我们称之为变量的“连线”来指向值。这个基础——对价值观的理解——将帮助我们继续建立我们的心智模型。

至于这些奇异的景象,我不再多想了。我有电线要指出,有问题要问。我最好得到它!

当我看着星星时,它们是明亮的。

我眨眼时它们还在吗?

我耸了耸肩。

“实施细节。”

Released under the MIT License.