js语法问题

发布于 2022-09-30 23:07:05 字数 776 浏览 46 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

三生路 2022-10-07 23:07:05

函数后面加(),这是立即执行函数,()里的东西就是传的参数,参数是mod[key]() || {},意思就是传入mod[key]()运行的结果当做参数,如果结果不存在,传入空对象

人生戏 2022-10-07 23:07:05
((res) => {
})(res)

这个是定义了一个立即执行方法,(res)是方法入参

mod[key]() || {}
mod 是一个对象,对象里面有方法,根据key执行相应的方法,得到res参数。
|| 是短路逻辑
如果为空就执行后面的 {},所以 res参数就等于 {}。

ps:
在javascript的逻辑运算中,0、""、null、false、undefined、NaN都会判定为false,而其他都为true。
短路逻辑操作符有 && 和 ||;

表达式 && 表达式
前一个表达式为true 则执行后面一个表达式。

表达式 || 表达式
前一个表达式为false, 则执行后面一个表达式。

我早已燃尽 2022-10-07 23:07:05

||逻辑或
const C = A || B 意味着:

  • 如果 Boolean(A) === true,则 C = A
  • 如果 Boolean(A) === false,则 C = B,无论 B 为何值。
烟─花易冷 2022-10-07 23:07:05

(mod[key]() || {})这里是一个传参调用,而参数则是mod[key]() || {}计算的结果,这里用了或运算短路效果来保证传参格式符合要求,即,如果mod[key]()结果有效,则传递这个值,否则传递{}。即如果mod[key]没有定义,则会传递{}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文