和 @怡红公子 讨论的时候发现了如下的问题,由于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 无法理解……求科普!
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
就是
2和3是等价的
提供一个测试的思路,函数体内
{}可改成第二种情况与第三种情况一样会弹出1,第一种情况不会哦,也就是没有执行函数嘛