在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 這樣的一個三元運算有什么問題?

這樣的一個三元運算有什么問題?

一個簡單的判斷替換字符串而已,自己看起來好像沒有什么問題,目的是如果state為空或者未定義默認為“online”,現(xiàn)結(jié)果是當state為“offline”時依舊輸出了“online”。

var state = optionsEntity.state;  //state已確認為“offline”
var states = function(state){
    return state == "" ? "online" : (state=state||"online");
};
    console.log(states());  //輸出結(jié)果是“online”

是因為三元中這樣的嵌套式錯誤的嗎?

回答
編輯回答
撥弦

console.log()沒有傳值啊,console.log(states(state ))

2017年6月10日 20:02
編輯回答
執(zhí)念
var states = function(state){
    return state == "" ? "online" : (state=state||"online");
};

改為

var states = function(){
    return state == "" ? "online" : (state=state||"online");
};
2017年10月21日 21:59
編輯回答
假灑脫
var states = function(state){  // 這里既然有參數(shù)為什么下面調(diào)用的時候不傳值?這里面的state只是你定義的一個名稱而已,它又不會幫你去外面找名字一樣的放進來
    console.log(state)  // undefined
    return state == "" ? "online" : (state=state||"online");
};

正確的調(diào)用姿勢console.log(states(state)) // offline

上面有答案把function里面的參數(shù)去掉就可以了,簡單解釋一下,是因為你在外面定義的state是全局變量,而在function里面的參數(shù)是局部變量,當function執(zhí)行的時候它會首先找到內(nèi)部定義的變量,再往外找,這里你如果把參數(shù)名改成其他的,不和外面的重名,輸出也會變成正常的offline

2018年1月25日 14:25