JavaScript被称为“动态”的含义是什么?

29

我从不同的来源(例如维基百科、文章等)了解了编程中动态(dynamic)的含义。维基百科 讲到动态编程语言在运行时执行某些编程行为(与静态语言在编译时相对),但他们的解释含糊不清,并且讲述了这些行为对于所有编程语言来说在难度、复杂度和性能成本上的变化。

那么,具体来说,JavaScript是动态的意思是什么?

我可能完全错了,但我也理解 JavaScript 是一种动态类型语言,因为你不需要先声明变量/函数的类型(例如 var, function jsFunction() ),而像Java这样的静态类型语言则需要在实例化变量/函数之前定义类型(例如 int var, public int function() )。

这是否与此有关?


1
我认为动态这个词在不同的上下文中可能指的是不同的概念,所以我猜你应该提供你所参考的来源,然后我们可以尝试弄清楚在那个上下文中动态意味着什么。 - Andrea Casaccia
3
请点击您提供的链接,其中详细解释了他们如何将JavaScript称为“动态”的方式... https://en.wikipedia.org/wiki/JavaScript#Dynamic - Reinstate Monica Cellio
1
@AndreaCasaccia 我在我的帖子中链接了维基百科文章,而且谷歌搜索对于其他一些随机的问题也很有帮助 XD - OpMt
2
JavaScript 可以在运行后进行修改。例如,单击按钮可以加载更多脚本或修改(覆盖)现有函数。您还可以随意修改对象结构。此外,没有强类型,这意味着您可以在运行时操纵几乎所有内容。如果您对想要执行的某些操作有具体问题,则应该研究一下。我认为您还没有完全掌握您发布的问题的广泛性(和模糊性)。 - Reinstate Monica Cellio
1
我只是想了解更多的信息,包括细节方面。你知道它在复杂性和性能成本方面如何变化的详细信息吗?我甚至很好奇与其他编程语言相比的数字是多少 XD。 - OpMt
显示剩余7条评论
2个回答

37

大多数语言都有某种动态行为。即使是静态类型语言也可以有动态或变量数据类型,可以包含不同的数据类型。

JavaScript被称为动态语言,因为它不仅具有一些动态方面,而几乎所有部分都是动态的。

所有变量都是动态的(包括类型和存在性),甚至代码也是动态的。您可以在运行时创建新变量,并且变量的类型在运行时确定。您可以随时创建新函数或替换现有函数。在浏览器中使用时,当加载更多脚本文件时,代码会被添加,您可以随时加载更多文件。

现在JavaScript在许多实现中被编译,背景下生成静态代码和静态类型。但是,行为仍然是动态的,编译器只在发现某个特定对象未使用动态方面时才生成静态类型。


1
我确信我阅读了很多你写的不同文章。为你的建设性点个赞。看起来似乎没有明确的界线或答案说明JavaScript中动态到底是指什么。 - OpMt
一些背景:一位顶尖科技公司的软件工程师直接问我JavaScript如何是动态的,更多地是寻求一个直截了当的答案。 - OpMt
1
@OpMt:确切地说,没有精确的规则。它被称为动态语言基本上是因为它的设计初衷就是如此,这在语言设计的选择中可以看出来。 - Guffa
此外,对象是动态的。eval非常动态。最重要的是,继承是动态的。 - Bergi

4

JS最有意义的动态特性是它是动态类型的:该语言具有数据类型,但在程序实际运行之前不会检查程序的类型是否“正确”。相反,静态类型是指程序的类型由检查其源代码的程序在运行之前进行验证。(例如,Java和ML是静态类型。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接