js语法问题
function fnCreate(mod, isOpen = true) {
if (isOpen) {
for (var key in mod) {
((res) => {
if (res.isOpen !== false) {
Mock.mock(new RegExp(res.url), res.type, (opts) => {
opts['data'] = opts.body ? JSON.parse(opts.body) : null
delete opts.body
console.log('\n')
console.log('%cmock拦截, 请求: ', 'color:blue', opts)
console.log('%cmock拦截, 响应: ', 'color:blue', res.data)
return res.data
})
}
})(mod[key]() || {})
}
}
}
上面这段代码中箭头函数后面紧跟的(mod[key]() || {}),是个什么语法规则?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
函数后面加(),这是立即执行函数,()里的东西就是传的参数,参数是
mod[key]() || {}
,意思就是传入mod[key]()
运行的结果当做参数,如果结果不存在,传入空对象这个是定义了一个立即执行方法,(res)是方法入参
mod[key]() || {}
mod 是一个对象,对象里面有方法,根据key执行相应的方法,得到res参数。
|| 是短路逻辑
如果为空就执行后面的 {},所以 res参数就等于 {}。
表达式 && 表达式
前一个表达式为true 则执行后面一个表达式。
表达式 || 表达式
前一个表达式为false, 则执行后面一个表达式。
||
是逻辑或
。const C = A || B
意味着:Boolean(A) === true
,则C = A
;Boolean(A) === false
,则C = B
,无论B
为何值。(mod[key]() || {})
这里是一个传参调用,而参数则是mod[key]() || {}
计算的结果,这里用了或运算短路效果来保证传参格式符合要求,即,如果mod[key]()
结果有效,则传递这个值,否则传递{}
。即如果mod[key]
没有定义,则会传递{}