87,994
社区成员
发帖
与我相关
我的任务
分享function f(o1, o2, ar) {
//......
}({
1: ["test1", "test2"],
2: [{"test2":123, "test3":321}]
}, {}, [2])(2);function f(m){return window[m]}('alert')(233)
VM13636:1 Uncaught TypeError: "alert" is not a function(…)
(function f(m){return window[m]})('alert')(233)
(function(m){return window[m]})('alert')(2333333)

function f(o1, o2, ar){
}
会被识别成函数声明,不会当成函数表达式立即执行。
后面的,变成如下格式,明显无法作为函数调用,所以报错了
(...)(2)
function f(o1, o2, ar) {
//return a function
}
var o1 = {
1: ["test1", "test2"],
2: [{"test2":123, "test3":321}]
};
var o2 = {};
var ar = [2];
var fn = f(o1, o2, ar);
fn(2);
其中2: [,2是对象的属性名(js中属性名可以数字开头)。
[2]是数组,2数组成员。
(2),参考上面的fn(2),2是传入的参数