翻閱古今
2019-03-20 18:19:56
一個簡單的判斷替換字符串而已,自己看起來好像沒有什么問題,目的是如果state為空或者未定義默認為“online”,現結果是當state為“offline”時依舊輸出了“online”。var state = optionsEntity.state; //state已確認為“offline”var states = function(state){ return state == "" ? "online" : (state=state||"online");}; console.log(states()); //輸出結果是“online”是因為三元中這樣的嵌套式錯誤的嗎?
3 回答

心有法竹
TA貢獻1866條經驗 獲得超5個贊
var states = function(state){ // 這里既然有參數為什么下面調用的時候不傳值?這里面的state只是你定義的一個名稱而已,它又不會幫你去外面找名字一樣的放進來
console.log(state) // undefined
return state == "" ? "online" : (state=state||"online");
};
正確的調用姿勢console.log(states(state)) // offline
上面有答案把function里面的參數去掉就可以了,簡單解釋一下,是因為你在外面定義的state是全局變量,而在function里面的參數是局部變量,當function執行的時候它會首先找到內部定義的變量,再往外找,這里你如果把參數名改成其他的,不和外面的重名,輸出也會變成正常的offline

慕哥6287543
TA貢獻1831條經驗 獲得超10個贊
var states = function(state){
return state == "" ? "online" : (state=state||"online");
};
改為
var states = function(){
return state == "" ? "online" : (state=state||"online");
};
添加回答
舉報
0/150
提交
取消