一个关于三元运算符的问题

#1

三元运算符===if else吗,他的原理有没有人能给个文章,不是很懂下面代码为什么这样,是不是因为三元运算符如果:两边有一项是“”,那么就不执行?
代码如下:

              {app.tabs.map(function(item,index){
                return <TabPane tab={item} key={index}>
                  {item == "a"? "a":""}
                  {item == "b"? "b":""}
                </TabPane>
              })}

点击某个按钮,会向app.tabs数组里加东西,如果是a就显示a,如果是b就显示b,我在点a的时候,item是a,最后显示的是a,难道后面那个没有运行吗,如果运行了,不应该把a干掉,让他变成空白吗
是不是这种写法完全等于item==“a”&&“a”?

#2

我如果把:后面的空换成alert(xx)会发现item是a的时候下面那个b会执行,item是b的时候上面的a也会执行

#3

这样写简洁一点,item == “a” && “a”

#4

我不理解为什么运行第一行为true的时候为什么第二行的运行没有影响结果,明明第二行运行之后会变成空啊

#5

明白了。。。写代码写晕了,第二行是运行了的,他在内容后面追加的"",感觉想成jq了,不是jq把所有内容清空替换啊!!