我从不同的来源(例如维基,文章等)中读到了编程意义上的动态意味着什么。 Wikipedia讨论动态编程语言如何在运行时执行某些编程行为(而不是静态语言的编译时间),但他们的解释含糊不清,并讨论了这些行为在难度,复杂性和性能成本方面的变化适用于所有编程语言。
因此,对于JavaScript而言,它是什么意思是动态的?
我可能完全错了,但也理解JavaScript是动态类型语言,因为在实例化变量/函数之前没有状态类型(例如var,function jsFunction())而不是静态类似Java的类型语言,在实例化变量/函数之前定义类型(例如int var,public int function())。
这是否与此相关?
答案 0 :(得分:13)
大多数语言都有动态行为的某些方面。即使是静态类型的语言也可以具有可以包含不同数据类型的动态或变体数据类型。
JavaScript被称为动态语言,因为它不仅具有一些动态方面,几乎所有内容都是动态的。
所有变量都是动态的(包括类型和存在),甚至代码都是动态的。您可以在运行时创建新变量,并在运行时确定变量的类型。您可以随时创建新功能,也可以替换现有功能。在浏览器中使用时,加载更多脚本文件时会添加代码,您可以随时加载更多文件。
现在JavaScript在许多实现中编译,静态代码和静态类型在后台生成。但是,该行为仍然是动态的,编译器仅在发现动态方面未用于特定对象时才生成静态类型。
答案 1 :(得分:2)
JS最有意义的定义方式是动态输入:它是动态类型的:语言有数据类型,但不检查程序的类型是"好吧&# 34;直到程序实际运行。相反的是静态类型,意味着程序'类型由程序验证,该程序在运行之前检查其源代码。 (例如,Java和ML是静态类型的。)