如果将匿名函数的结果赋给变量,那么每次调用变量时都会调用该函数吗?

时间:2015-09-15 22:49:22

标签: javascript

所以,如果有:

var num = (function(){
  return 1 + 1;
})();

每次使用该变量时都会处理该函数吗?或者它是仅在浏览器第一次读取脚本时处理并且返回结果“永久”分配给该变量?

3 个答案:

答案 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(){ }