Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.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 如何让起重机在延长的课程中工作?_Javascript_Typescript_Hoisting - Fatal编程技术网

Javascript 如何让起重机在延长的课程中工作?

Javascript 如何让起重机在延长的课程中工作?,javascript,typescript,hoisting,Javascript,Typescript,Hoisting,我说的是: 类MyAction{ } 类MyActionEdit扩展MyActionNew{/JavaScript类未被提升 在相关链接中有一个关于Hero类的示例。stackoverflow中有许多答案,说明类被提升,并且这种行为在ES5和ES6之间发生了变化。看看这个答案: 是的,但不是。这是正确的,类名被挂起。然而,它与你的情况无关 Javascript分两步执行: 解析/编译 运行时 在解析步骤中,Javascript引擎将代码拆分、读取、标记并将其转换为可执行形式。在这一步骤中,它列出

我说的是:

类MyAction{
}

类MyActionEdit扩展MyActionNew{/JavaScript类未被提升

在相关链接中有一个关于Hero类的示例。stackoverflow中有许多答案,说明类被提升,并且这种行为在ES5和ES6之间发生了变化。看看这个答案:

是的,但不是。这是正确的,类名被挂起。然而,它与你的情况无关


Javascript分两步执行:

  • 解析/编译
  • 运行时
  • 在解析步骤中,Javascript引擎将代码拆分、读取、标记并将其转换为可执行形式。在这一步骤中,它列出了运行时将使用的一般结构,其中包括事物的名称以及它们所属的范围。因此,将在co中创建名称
    MyActionEdit
    更正作用域。这就是提升。因为在第二步中,运行时,当代码实际运行时,该名称将已经存在,即使它稍后出现在作用域中:

    console.log(foo);
    
    var foo='bar';
    在上面你扩展了
    MyActionNew
    ,在下面你扩展了
    MyAction
    ,它们中的一个现在被更正了JavaScript分两步执行:1)解析/编译,2)运行时。提升是有效的,因为像变量名这样的东西是在解析步骤中创建的,因此在运行时就已经存在了t您希望在解析步骤中发生,并且在该步骤中,顺序必须是逻辑的;没有提升。简而言之-
    为什么提升在这里不起作用
    -因为类定义没有提升您的第二个示例。@Thomas这里没有循环扩展。它只是
    MyAction
    → <代码>MyActionNew
    MyActionEdit
    。只是声明的顺序有点混乱。我已经读过了。但这似乎只适用于class关键字。因为我使用的是typescript,所以我可以将类输出为任何其他格式。但是我不明白,如果有声明,提升在哪里起作用。我已经花了几个小时的时间搜索和阅读stack overflow、 在我发布我的问题之前。好吧,这对我来说很有意义。所以我必须更改我的文件收集器来管理连接文件的正确顺序。谢谢你的澄清。我已经接受了你的答案。