Demo1: 结果是1
(function foo(foo) {
console.log(foo);
})(1);
Demo2: 结果是function
(function foo(a) {
console.log(foo);
})(1);
我想知道,是因为函数 参数 的优先级 比 函数表达式名 的优先级优先级高吗?
1:在函數作用域沒找得到參數foo,輸出參數foo
2:函數作用域如果找不到foo,去全局找,找到了foo的函數,輸出函數foo
你不是传了1进去了吗?肯定是1了呀。首先,你这个
(function foo(foo) {
console.log(foo);
})(1);
()();前面一个括号里是一个函数,前面括号里的表示就是一个整体了,然后后面括号是不是相当于你调用函数的时候fun(1)这样子?对吧,你这里传了参数1个匿名函数,自然就是1了啊!
这是一个匿名自执行函数
(function foo(foo) {
var foo = foo = 1;
console.log(foo);
})(1);
这样看
这问题需要你了解js的作用域,js的变量是向上查询 就近原则
应该是,你不都自己试验出来了么。参数名最好别和函数名重了,看着太纠结了
即时函数,传入了参数1
此函数末尾括号中的内容为传递给自身的参数