问题答案
javascript中,函数一定要这样:
 
 
  1. function a(){} 
  2.  
  3. a(); 
如果反了,就不行,比如:
 
 
  1. a(); 
  2. function a(){}; 
但是在php里就可以这样:
 
  1. a(); 
  2. function a(){} 
同样是脚本语言,为什么javascript不能在调用后申明?javascript后续版本中是否会实现这样的功能?
 
 
标签: PHP JavaScript
答案
function func(){...}这是函数声明,将在代码执行前被(完整地)加载到作用域的最前端,因此在代码编写中可以(在同作用域或上层作用域中)后置,即题主所说的先调用再声明。
函数声明/变量声明都会被hoisting,其中函数声明会被完整前置,而变量声明仅前置声明部分而不前置赋值部分。
代码栗子:
 
 
  1. (function(){ 
  2.   f1()  
  3.   f2() 
  4.  
  5.   var f1 = function(){} 
  6.   function f2(){} 
  7. })() 
运行时:
 
 
  1. (function(){ 
  2.   var f1,function f2(){} //hoisting,被隐式提升的声明 
  3.  
  4.   f1() //ReferenceError: f1 is not defined 
  5.   f2() 
  6.  
  7.   f1 = function(){} 
  8. })() 
结论:
js目前就支持题主所说的先调用再声明。
举一反三