function a(x) {
return x * 2;
}
var a;
alert(a);//为什么他弹出来的是这个函数而不是那个变量
js作为一本脚本语言,可以不经过编译直接运行,但变量或函数同名时,就会预编译。
解析方式是,对var关键字先提前声明,接着对函数定义式进行提前加在var后头,再接着顺序执行代码(先预声明变量再预定义函数)。
a是变量,被提升到函数a()前面,执行时候函覆盖了变量.
谢谢
因为你不管在哪里定义变量,js都会把变量拿到最前面进行定义。你可以搜索一下什么叫js预编译。