这句js怎么理解

jason_mf 2018-06-25 09:54:34
function f(o1, o2, ar) {
//......
}({
1: ["test1", "test2"],
2: [{"test2":123, "test3":321}]
}, {}, [2])(2);

2:[], 这个2 怎么理解?
{}, [2]) 这个 2怎么理解?
(2); 这个2 又怎么理解?
...全文
156 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
文盲老顾 2018-06-27
  • 打赏
  • 举报
回复
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)
文盲老顾 2018-06-27
  • 打赏
  • 举报
回复
(function(m){return window[m]})('alert')(2333333)
文盲老顾 2018-06-27
  • 打赏
  • 举报
回复
引用 5 楼 apollokk 的回复:
[quote=引用 3 楼 wz_307 的回复:]
[quote=引用 2 楼 apollokk 的回复:]
你的代码不能正确运行:


如果改成下面这样倒是可以:


不清楚你实际可运行的代码是什么样子?


这肯定是因为//......里的内容没有贴完整。f函数最终会返回一个函数, 这个函数,传int值进去可以进行后续处理

#1楼解释的很完整了[/quote]
是写法不正确,函数体没有内容不是重点[/quote]

本例中,写法是正确的,函数体被省略的部分也是一个函数,一楼解释的很清楚了

({
1: ["test1", "test2"],
2: [{"test2":123, "test3":321}]
}, {}, [2])

这个部分是函数f的参数

(2) 是函数f返回的函数的参数
Hello World, 2018-06-26
  • 打赏
  • 举报
回复
你的代码不能正确运行:


如果改成下面这样倒是可以:


不清楚你实际可运行的代码是什么样子?
Hello World, 2018-06-26
  • 打赏
  • 举报
回复
引用 3 楼 wz_307 的回复:
[quote=引用 2 楼 apollokk 的回复:]
你的代码不能正确运行:


如果改成下面这样倒是可以:


不清楚你实际可运行的代码是什么样子?


这肯定是因为//......里的内容没有贴完整。f函数最终会返回一个函数, 这个函数,传int值进去可以进行后续处理

#1楼解释的很完整了[/quote]
是写法不正确,函数体没有内容不是重点
ambit_tsai-微信 2018-06-26
  • 打赏
  • 举报
回复
引用 3 楼 wz_307的回复:
[quote=引用 2 楼 apollokk 的回复:]
你的代码不能正确运行:


如果改成下面这样倒是可以:


不清楚你实际可运行的代码是什么样子?


这肯定是因为//......里的内容没有贴完整。f函数最终会返回一个函数, 这个函数,传int值进去可以进行后续处理

#1楼解释的很完整了[/quote] 楼主的代码明显没贴完整,拿贴出的代码运行肯定会报错的。 前面部分

function f(o1, o2, ar){
}
会被识别成函数声明,不会当成函数表达式立即执行。 后面的,变成如下格式,明显无法作为函数调用,所以报错了

(...)(2)
wz_307 2018-06-26
  • 打赏
  • 举报
回复
引用 2 楼 apollokk 的回复:
你的代码不能正确运行:


如果改成下面这样倒是可以:


不清楚你实际可运行的代码是什么样子?


这肯定是因为//......里的内容没有贴完整。f函数最终会返回一个函数, 这个函数,传int值进去可以进行后续处理

#1楼解释的很完整了
ambit_tsai-微信 2018-06-25
  • 打赏
  • 举报
回复
原代码可以这样解读

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是传入的参数

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧