signin: function() {
"" == c ? "" == g ? (g = new Loginview({
el: "body",
mode: "signin"
}),
g.render()) : g.render("signin") : c.render("signin")
}
请问这段三元运算如何解读吗?表示看着很懵逼,第一次看到这样的用法
本质上就是两个 if else,能把代码写成这样的人应当会挨千刀的
js代码用写这么复杂么?开发和老板多大仇。。。 你离职吧,估计你们的日子不好过。。。
这是谁写的,希望膜拜下
这种代码是压缩过后吧,一般正常人都不会这么写
这种代码看起来很累
代码是给人看的!
写代码注意括号,或者分开多个if:
a ? (b ? c : d) : e
显得自己牛才会这么写,他自己看着不累吗?
三元运算都有人说写的不可读的,那你还能读啥?
我来说的清楚一点 本质有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")
}
}
哈哈哈 增加阅读难度。
有c渲染c,无c判断是否有g,有则渲染,没有则撸一个g来执行渲染。写成这样也是和自己有仇了。