做到一道题目是这样的:
var a=2;
function f() {
console.log(a);
var a=3;
}
f();// undefined
f(4);// undefined
为什么f()和f(4)会是undefined呢??这里不是变量提升吗
做到一道题目是这样的:
var a=2;
function f() {
console.log(a);
var a=3;
}
f();// undefined
f(4);// undefined
为什么f()和f(4)会是undefined呢??这里不是变量提升吗
f();
var a=2;
function f() {
var a; // 变量提升
console.log(a);
var a=3;
}
f(4):
你的f()都没有定义参数,和f()是一样的
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
f()
: 是的提升了,所以console.log()
执行时f函数内存在a,不会去外部作用域找,console.log()
执行时,只是声明了,没有赋值,所以是undefinedf(4)
: 你的函数根本没有定义形参,内部也没有使用arguments变量,所以传什么都跟没传一样,等同f()arguments会接收到你传进来的所有参数,不管你定义了没有或者定义了多少。
函数形参可以当做是隐形的变量声明