Javascript 如果变量不返回内部函数,那么将IIEF设置为变量的目的是什么?
我理解一个函数返回另一个函数的意义:Javascript 如果变量不返回内部函数,那么将IIEF设置为变量的目的是什么?,javascript,Javascript,我理解一个函数返回另一个函数的意义: let foo = (function() { let num = 10; return function(x) { return num + x } })(); foo(10) // 20 但我也看到了以下内容,我不太明白。这不是立即执行,变量就没有用处了吗 let foo = (function() { return "Testing" })(); 是的,第二个例子与: l
let foo = (function() {
let num = 10;
return function(x) {
return num + x
}
})();
foo(10) // 20
但我也看到了以下内容,我不太明白。这不是立即执行,变量就没有用处了吗
let foo = (function() {
return "Testing"
})();
是的,第二个例子与:
let foo = "Testing";
所以生命是毫无用处的。是的,第二个例子与:
let foo = "Testing";
所以IIFE是非常无用的。如果你在函数中所做的只是返回一个字符串,那么在你的例子中,是的,没有任何意义,只是混淆了开销 IIFE可用于控制操作范围。我可以想象,在一个不完全琐碎的过程结束时返回一个字符串或其他非函数原语是合理的,例如: const userHasPermissions==>{ //这里有很多逻辑线检查各种事情 //根据执行的逻辑返回 返回true;
}; 如果您在函数中所做的只是返回一个字符串,那么在您的示例中,是的,没有任何意义,这只是混淆了开销 IIFE可用于控制操作范围。我可以想象,在一个不完全琐碎的过程结束时返回一个字符串或其他非函数原语是合理的,例如: const userHasPermissions==>{ //这里有很多逻辑线检查各种事情 //根据执行的逻辑返回 返回true; }; 正确的术语是——正如你所说,这些样本并不能很好地解释为什么使用它 这都是关于变量范围的,因为在这个IIFE范围内定义的所有变量只能在它内部访问,所以您不必担心命名任何与全局范围内的变量相冲突的变量 考虑以下代码
(function () {
var status= 'Fetched';
window.$$status = 'Foo';
console.log(status); // 'Fetched'
console.log(window.$$status); // "Foo"
})();
console.log(status); // undefined
console.log(window.$$status); // 'Foo'.
console.log(window.status); // '' .
正确的术语是——正如你所说,这些样本并不能很好地解释为什么使用它
这都是关于变量范围的,因为在这个IIFE范围内定义的所有变量只能在它内部访问,所以您不必担心命名任何与全局范围内的变量相冲突的变量
考虑以下代码
(function () {
var status= 'Fetched';
window.$$status = 'Foo';
console.log(status); // 'Fetched'
console.log(window.$$status); // "Foo"
})();
console.log(status); // undefined
console.log(window.$$status); // 'Foo'.
console.log(window.status); // '' .