开发者社区> 问答> 正文

js代码求解释求解释求助?报错

代码1

<script> fn(); function fn(){ alert("fn called"); } </script>

代码2:

<script>
fn();
 var fn =function (){
	alert("fn called");
}
</script>



为啥代码2会报错,求原理上的解释,不胜感激



展开
收起
爱吃鱼的程序员 2020-06-14 18:54:06 388 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
    //代码二应该是报错的吧//在作用域内,代码执行时function声明和var声明都会提升到作用域开头的//所以代码一相当于functionfn(){alert("fncalled");}fn();//代码二varfn;fn();//此处应该报错undefinedisnotafunctionfn=function(){alert("fncalled");}嗯

    变量提升规则,代码2相当于

    <script>varfn;fn();fn=function(){alert("fncalled");}</script>



    什么变量提升规则呀?不要问问什么,记住,这就是规定。一个重要的规则。 <script>varfn=function(){alert("fncalled");}fn();</script>



    这个俺知道啦
    2020-06-14 18:54:23
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载