求教js中 function(){...}() 的涵义


@怡红公子 讨论的时候发现了如下的问题,由于js基础薄弱,百思不得其解。


 var arr = [1,2];

function test1(a){a[0] = 3}(arr);
console.log(arr); //[1,2]

(function test2(a){a[0] = 4}(arr));
console.log(arr);  //[4,2]

(function test3(a){a[0] = 5})(arr);
console.log(arr);  //[5,2]

test3很好理解,去掉头就可以……我是说去掉函数名就是平时常用的匿名函数用法。

test2没用过,但一直自我认为和test3是等价的。

test1 无法理解……求科普!

JavaScript 闭包

moyang 10 years, 8 months ago

 function test1(a){a[0] = 3}(arr);

就是


 function test1(a){
  a[0] = 3
}

(arr);

诶诶诶诶诶诶 answered 10 years, 8 months ago

Your Answer