为了账号安全,请及时绑定邮箱和手机立即绑定

采用function和赋值语句定义函数,为什么最后采用的都是赋值语句定义的函数?

采用function和赋值语句定义函数,为什么最后采用的都是赋值语句定义的函数?

undertale 2016-07-13 16:34:26
这里输出是1,为什么? 一个函数被多次定义,后面的定义会覆盖前面的定义, 而赋值给f,变量提升会提升到文件前面。顺序相当于1.var f; 2.f=function 3.function f(); 所以为什么输出不是2? <script>    var f=function(){        document.write('1');    };     function f(){         document.write('2');     };     f(); </script>
查看完整描述

3 回答

已采纳
?
nickylau82

TA贡献128条经验 获得超67个赞

你有一点搞错了,var hoist(var悬浮)只出现在变量中

而function f(){

// 函数体

} 这个叫函数声明


var f = function(){//函数体} 这个叫函数表达式


函数声明是在JavaScript一旦进入上下文之后马上执行的。

因此正确的顺序是

  1. 执行函数声明

  2. 执行函数表达式

  3. 调用函数 

因此输出的是1

查看完整回答
3 反对 回复 2016-07-13
?
玉林峰

TA贡献14条经验 获得超9个赞

我个人觉得执行顺序应该是这样:

  1. var f        (声明提前 f为undefind)  

  2. function f(){document.write('2')}    (函数声明,声明提前)

  3. 执行 var f = function(){document.write('1') ;  (给 f 赋值)

  4. 调用 f()      所以会输出 1;

查看完整回答
反对 回复 2016-07-14
?
qyy2499760117_叶子

TA贡献188条经验 获得超91个赞

 立即执行匿名函数··· 


查看完整回答
反对 回复 2016-07-13
  • 3 回答
  • 0 关注
  • 1777 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信