javascript - 请问这段三元运算如何解读?

查看:77
本文介绍了javascript - 请问这段三元运算如何解读?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

signin: function() {
    "" == c ? "" == g ? (g = new Loginview({
        el: "body",
        mode: "signin"
    }),
    g.render()) : g.render("signin") : c.render("signin")
}

请问这段三元运算如何解读吗?表示看着很懵逼,第一次看到这样的用法

解决方案

我来说的清楚一点 本质有2点

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

优先级 运算类型 关联性 运算符
4 条件运算符 从右到左 … ? … : …

条件表达式的优先级别比较低(==之后) 然后是从右到左的 关联性

@王小强 所说
本文的抽象形式:a ? b ? c : d : e就等价于
a ? (b ? c : d) : e

所以原来式子就等价于:

signin: function() {
    if ("" == c) {
        if ("" == g) {
            g = new Loginview({
                el: "body",
                mode: "signin"
            }),
                g.render()
        } else {
            g.render("signin")
        }
    } else {
        c.render("signin")
    }
}

这篇关于javascript - 请问这段三元运算如何解读?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆