Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 除了JS,其他语言是否按加载顺序执行代码?_Javascript_Oop - Fatal编程技术网

Javascript 除了JS,其他语言是否按加载顺序执行代码?

Javascript 除了JS,其他语言是否按加载顺序执行代码?,javascript,oop,Javascript,Oop,很多人(像我一样)都习惯使用JavaScript,因为代码是按照加载顺序执行的,即从上到下,因此如果一个元素还没有加载,就不可能对其进行操作,或者如果一个函数还没有定义,就不可能调用它。由于JS(和VBscript,但不太流行)是唯一的internet客户端编程(脚本,如果您愿意)语言,因此是唯一遇到必须从不同位置加载问题的语言,我假设没有其他语言能够做到这一点,也就是说,可以使用该语言调用函数/方法,在文档的后面定义了它。这个假设正确吗,或者有其他语言也这样做吗 编辑:对于那些不理解我的意思的

很多人(像我一样)都习惯使用JavaScript,因为代码是按照加载顺序执行的,即从上到下,因此如果一个元素还没有加载,就不可能对其进行操作,或者如果一个函数还没有定义,就不可能调用它。由于JS(和VBscript,但不太流行)是唯一的internet客户端编程(脚本,如果您愿意)语言,因此是唯一遇到必须从不同位置加载问题的语言,我假设没有其他语言能够做到这一点,也就是说,可以使用该语言调用函数/方法,在文档的后面定义了它。这个假设正确吗,或者有其他语言也这样做吗

编辑:对于那些不理解我的意思的人,这里有一个Java示例:

public class MainClass {
    public static void main(String[] args) {
        SomeClass SomeObject = new SomeClass;
        SomeObject.changeSomeVariable("someValue");
    }
}
class SomeClass {
    String someVariable;
    void changeSomeVariable(newValue){
        someVariable = newValue;
    }
}

请注意,定义对象的类如何位于创建对象的行之后。上面的方法行得通吗(我可能语法有点错误)?

许多脚本语言,如PHP和Ruby,都是按顺序执行的

这是脚本语言的租户。在C++(编译语言)中,

,例如,您可以使用一个类或函数,而只知道其定义,而不是实现。
int some_function(int i); 
// we know the name of the function, the types of its parameters and
// its return value. We don't know, however, what does this function 
// exactly do.

int main() {
  int x = some_function(42);
}
当然,函数的实现必须放在某个地方,否则链接将失败

但是如果我们不知道函数或类的名称或签名,我们就不能使用它。与编译语言相反,在脚本语言(如Python、PHP、JavaScript等)中,您可以执行以下操作:

function f() {
  return some_function(42);
}
即使未定义
某些函数
,也可以创建此JavaScript函数而不会出错。但它必须在调用
f()
时定义


我们可以不断地谈论这些关于某些语言的事实。但是有很多种语言,它们都是不同的。如果您对这个问题感到好奇,我可以建议您学习一些其他语言(至少一种编译语言和一种函数语言)。

许多语言允许您调用未定义的函数。例如在C#或VB.NET中。在C/C++中,您必须在使用函数之前声明它,但可以在以后定义它的主体。这是语言本身的一种设计选择,而且(我猜)更多地来自于编译器/解释器设计(速度和简单性),而不是因为它的使用。事实上,这个问题很模糊,但答案并不清楚。每种语言都以某种方式按顺序执行代码,所以他的重点可能是函数声明和入口点。。。是吗?不管怎么说,我的意思是,在JS中,如果一个脚本操作一个元素,它在元素本身之前(两者都在主体中),那么它就不能工作;然而,在Java之类的东西中,如果我创建一个对象
SomeClass someObject=new SomeClass
,然后尝试对它做点什么-
someObject.someVariable=“somevalue”
,那么如果我将该代码放在定义对象的代码之前,它会工作吗?@Bluefire”之类的东西,比如Java“LOL:)是的,它会工作。这取决于编译器/解释器。编写解释器的图像:当它解析未知标识符时会做什么?它必须解析所有其他内容才能找到它,或者在开始执行之前预解析所有内容。这是不这样做的最明显的原因(对于解释器来说尤其如此)。另一个例子:PHP是脚本语言,但在PHP中,您可以使用下面在文件中定义的函数。这对于脚本语言来说是不寻常的。但是它是在解释器中实现的,所以这是可能的。