- 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
- print(a)