4 个回答

朋友,如果按照你的代码来,是根本运行不了的,你的return都写错了...

你应该是想弄成这样吧...

function add(n) {
   return n + 1;
}

z,y都是4,至于为什么都是4。建议你自己去查资料吧,这个并不难。

关键字 "javascript 函数的两种声明方式的区别"
还有 "javascript 同名函数"

        var m = 1
        var y,z
        function add(n) {
            return n + 1
        }
        function add(n) {
            return n + 3
        }
           y = add(m)
         z = add(m)
  
           console.log(y);//4
        console.log(z);//4
    

js执行代码分为两个过程:1.预解析过程(变量与函数提升)2.代码一行一行执行。

预解析过程:
把var声明的变量提升到当前作用域最前面,不会提升赋值。
把函数声明提升到当前作用域的最前面。
如果函数同名 , 后者会覆盖前者 。
如果var声明的和函数声明的同名, 函数优先。

这些代码没有询问要哪个结果,如果是Y和Z的话,它们都是4;

函数会发生一个变量提升的作用,无论你的函数写在哪里都等同于写在作用域的顶部,所以第一个add会被第二个add覆盖掉。所以y,z都是4

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题