奇思妙想 · 2024年 7月 2日 0

为什么有的语言允许变量或函数先使用后声明/定义?

29 次浏览
  • JS 允许函数使用后再定义
    • 这与JS运行机制息息相关,JS代码块的函数声明会在代码运行之前被"提前预处理"。同样,Java/C#一样允许类成员函数A调用B,但B的实现在A之后。这与C/C++的头文件必须先定义函数声明不一样,Java/C#编译器无非是多一个二次确认B调用和实现是否匹配,这并不是什么不能接受的东西。JS有变量提升(Hoisting)机制,因为是JS解释器在执行前有编译过程。
  • Python 必须在使用前定义,如下代码会运行时错误:name 'a' is not defined
    • print(a)
      a = 1