猿问

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

这里输出是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>


undertale
浏览 1778回答 3
3回答

nickylau82

你有一点搞错了,var hoist(var悬浮)只出现在变量中而function f(){// 函数体} 这个叫函数声明var f = function(){//函数体} 这个叫函数表达式函数声明是在JavaScript一旦进入上下文之后马上执行的。因此正确的顺序是执行函数声明执行函数表达式调用函数 因此输出的是1

玉林峰

我个人觉得执行顺序应该是这样:var f        (声明提前 f为undefind)  function f(){document.write('2')}    (函数声明,声明提前)执行 var f = function(){document.write('1') ;  (给 f 赋值)调用 f()      所以会输出 1;

qyy2499760117_叶子

 立即执行匿名函数··· 
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答