首页 新闻 搜索 专区 学院

关于函数的问题

0
[已解决问题] 解决于 2016-05-12 11:19

   
    function a(x) {
        return x * 2;
    }
    var a;

  alert(a);//为什么他弹出来的是这个函数而不是那个变量

巴拉拉的主页 巴拉拉 | 初学一级 | 园豆:194
提问于:2016-03-28 13:53
< >
分享
最佳答案
0

js作为一本脚本语言,可以不经过编译直接运行,但变量或函数同名时,就会预编译。

解析方式是,对var关键字先提前声明,接着对函数定义式进行提前加在var后头,再接着顺序执行代码(先预声明变量再预定义函数)。

a是变量,被提升到函数a()前面,执行时候函覆盖了变量.

 

奖励园豆:5
无影飞絮剑 | 小虾三级 |园豆:1155 | 2016-03-28 17:35

谢谢

巴拉拉 | 园豆:194 (初学一级) | 2016-03-30 16:49
其他回答(2)
0

因为你不管在哪里定义变量,js都会把变量拿到最前面进行定义。你可以搜索一下什么叫js预编译。

Silababy | 园豆:204 (菜鸟二级) | 2016-03-28 14:01
0

这就javascript中的变量提升发生了作用。var a 被提升到函数前面啦。

请参考推荐链接

Jaryleely | 园豆:367 (菜鸟二级) | 2016-03-28 17:05

谢谢

支持(0) 反对(0) 巴拉拉 | 园豆:194 (初学一级) | 2016-03-30 16:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册