亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

翻閱古今 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


查看完整回答
反對 回復 2019-04-02
?
慕哥6287543

TA貢獻1831條經驗 獲得超10個贊

var states = function(state){

    return state == "" ? "online" : (state=state||"online");

};

改為


var states = function(){

    return state == "" ? "online" : (state=state||"online");

};


查看完整回答
反對 回復 2019-04-02
?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

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


查看完整回答
反對 回復 2019-04-02
  • 3 回答
  • 0 關注
  • 429 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號