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声明的和函数声明的同名, 函数优先。
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
朋友,如果按照你的代码来,是根本运行不了的,你的return都写错了...
你应该是想弄成这样吧...
z,y都是4,至于为什么都是4。建议你自己去查资料吧,这个并不难。
关键字 "javascript 函数的两种声明方式的区别"
还有 "javascript 同名函数"