所以,如果有:
var num = (function(){
return 1 + 1;
})();
每次使用该变量时都会处理该函数吗?或者它是仅在浏览器第一次读取脚本时处理并且返回结果“永久”分配给该变量?
答案 0 :(得分:2)
JavaScript不是一种懒惰的语言。 (“势在必行”是描述语言的一种方式;我不是给出最准确术语的人。)=
赋值运算符右侧的表达式将被计算一次,并且结果将存储在变量中。
答案 1 :(得分:1)
让我们进行测试,考虑以下脚本:
var timestamp = (function(){
return Date.now();
})();
console.log('variable at time t : ' + timestamp);
setTimeout(function() {
console.log('variable at time t+1s : ' + timestamp);
}, 1000);
返回相同的时间戳,我们可以得出结论,timestamp变量只被分配了一次自调用函数的值。
答案 2 :(得分:0)
(function(){ return 1 + 1; })();
是self-executing anonymous function
。这意味着它将被执行,因为它被定义一次并返回其值。如果要将函数分配给变量,只需使用
var func = function(){ }