Javascript 将立即调用的函数定义为普通函数并稍后将其分配给变量是否有效?
如果我创建一个立即调用的函数,如下所示:Javascript 将立即调用的函数定义为普通函数并稍后将其分配给变量是否有效?,javascript,Javascript,如果我创建一个立即调用的函数,如下所示: // assigned to variable and then invoked it var iife = (foo)(); // defined the function separately function foo() { var bar = 'baz'; console.log(bar); } (function () { // do some here })(); function foo() { var bar = '
// assigned to variable and then invoked it
var iife = (foo)();
// defined the function separately
function foo() {
var bar = 'baz';
console.log(bar);
}
(function () {
// do some here
})();
function foo() {
var bar = 'baz';
console.log(bar);
}
foo();
这是一个有效的生命吗?生命是这样的:
// assigned to variable and then invoked it
var iife = (foo)();
// defined the function separately
function foo() {
var bar = 'baz';
console.log(bar);
}
(function () {
// do some here
})();
function foo() {
var bar = 'baz';
console.log(bar);
}
foo();
在您的示例中,您将foo设置为常规函数,然后执行它
但foo将是正则变量。
在真实的IIFE中,它不会为当前作用域中的函数创建变量,它只是执行它。IIFE如下所示:
// assigned to variable and then invoked it
var iife = (foo)();
// defined the function separately
function foo() {
var bar = 'baz';
console.log(bar);
}
(function () {
// do some here
})();
function foo() {
var bar = 'baz';
console.log(bar);
}
foo();
在您的示例中,您将foo设置为常规函数,然后执行它
但foo将是正则变量。
在真实生活中,它不会为当前范围内的函数创建变量,它只是执行它。它不是一个IIFE:
function foo() {
var bar = 'baz';
console.log(bar);
}
var iife = (foo)();
(function () {
var bar = 'baz';
console.log(bar);
})();
这只是一个正常的函数,您可以在其中毫无理由地分组(foo)
。
您的正常功能应如下所示:
// assigned to variable and then invoked it
var iife = (foo)();
// defined the function separately
function foo() {
var bar = 'baz';
console.log(bar);
}
(function () {
// do some here
})();
function foo() {
var bar = 'baz';
console.log(bar);
}
foo();
你的生活应该是这样的:
function foo() {
var bar = 'baz';
console.log(bar);
}
var iife = (foo)();
(function () {
var bar = 'baz';
console.log(bar);
})();
它不是一种生活
function foo() {
var bar = 'baz';
console.log(bar);
}
var iife = (foo)();
(function () {
var bar = 'baz';
console.log(bar);
})();
这只是一个正常的函数,您可以在其中毫无理由地分组(foo)
。
您的正常功能应如下所示:
// assigned to variable and then invoked it
var iife = (foo)();
// defined the function separately
function foo() {
var bar = 'baz';
console.log(bar);
}
(function () {
// do some here
})();
function foo() {
var bar = 'baz';
console.log(bar);
}
foo();
你的生活应该是这样的:
function foo() {
var bar = 'baz';
console.log(bar);
}
var iife = (foo)();
(function () {
var bar = 'baz';
console.log(bar);
})();
此代码适用于:
function foo (){
console.log('IIFE');
}
var bar = (foo)(); // IIFE
console.log(bar) // undefined
但这与:
var bar2 = foo(); // IIFE
console.log(bar2) // undefined
这是因为IIFE只是一个调用自身的函数:
(function(){
// do something and then forget about this function
})();
虽然你的代码是有效的,但我认为variife=(foo)()代码>在概念上不是IIFE,即使它使用IIFE的语法。在它内部使用foo
意味着它通过引用执行函数(正常函数调用的特征)。()
是多余的,因此您应该只使用foo()代码>此代码适用于:
function foo (){
console.log('IIFE');
}
var bar = (foo)(); // IIFE
console.log(bar) // undefined
但这与:
var bar2 = foo(); // IIFE
console.log(bar2) // undefined
这是因为IIFE只是一个调用自身的函数:
(function(){
// do something and then forget about this function
})();
虽然你的代码是有效的,但我认为variife=(foo)()代码>在概念上不是IIFE,即使它使用IIFE的语法。在它内部使用foo
意味着它通过引用执行函数(正常函数调用的特征)。()
是多余的,因此您应该只使用foo()代码>你想用它实现什么?这是一个正常的函数调用好的,谢谢。答案消除了困惑。你想用这个实现什么?这是一个正常的函数调用。好的,谢谢。答案消除了混淆。您可以使用IIFE为变量赋值:var foo=(function(){return'IIFE'})()代码>可以使用IIFE为变量赋值:var foo=(函数(){return'IIFE'})()代码>