首页 > 一个 js 函数表达式 问题

一个 js 函数表达式 问题

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


此函数末尾括号中的内容为传递给自身的参数

【热门文章】
【热门文章】