第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

具有函數(shù)的JavaScript三元運算符示例

具有函數(shù)的JavaScript三元運算符示例

MYYA 2019-11-14 14:33:01
我正在使用jQuery 1.7.1我剛剛開始使用JavaScript三元運算符替換簡單的if / else語句。我已經(jīng)在幾個地方成功地做到了。當我確信可以成功完成其他工作時,我感到很驚訝,但是我還是嘗試了。這是原始語句:function updateItem() {    $this = $(this);    var IsChecked = $this.hasClass("IsChecked");    if (IsChecked == true){        removeItem($this);    } else {        addItem($this);    }}這是使用三元運算符的相同功能:function updateItem() {    $this = $(this);    var IsChecked = $this.hasClass("IsChecked");    (IsChecked == true) ? removeItem($this) : addItem($this);}我很驚訝,因為我看到的所有示例都只設置了這樣的變量:x = (1 < 2) ? true : false;我的問題是這是否是“正常”使用,并且可以在大多數(shù)JavaScript版本中使用嗎?哪里會失???還有其他不太明顯的用途嗎?更新-感謝您的“真實世界”建議?。。∥沂褂盟鳛槲业墓δ埽篺unction updateItem() {    $this = $(this);    $this.hasClass("IsChecked") ? removeItem($this) : addItem($this);}
查看完整描述

3 回答

?
慕田峪4524236

TA貢獻1875條經(jīng)驗 獲得超5個贊

呵呵,您的問題中有一些令人興奮的三元語法用法;我最喜歡最后一個...


x = (1 < 2) ? true : false;

這里完全不需要使用三進制-您可以簡單地編寫


x = (1 < 2);

同樣,三元語句的條件元素始終被評估為布爾值,因此您可以表示:


(IsChecked == true) ? removeItem($this) : addItem($this);

簡單如下:


(IsChecked) ? removeItem($this) : addItem($this);

實際上,我也將刪除該IsChecked臨時文件,使您擁有:


($this.hasClass("IsChecked")) ? removeItem($this) : addItem($this);

至于這是可以接受的語法,那肯定是!這是在不影響可讀性的情況下將四行代碼簡化為一行的好方法。我唯一要提的建議是避免在同一行上嵌套多個三元語句(這就是瘋狂?。?/p>


查看完整回答
反對 回復 2019-11-14
?
肥皂起泡泡

TA貢獻1829條經(jīng)驗 獲得超6個贊

三元樣式通常用于節(jié)省空間。從語義上講,它們是相同的。我更喜歡使用完整的if / then / else語法,因為我不喜歡犧牲可讀性-我是老派,而且我更喜歡用花括號。


完整的if / then / else格式幾乎用于所有內(nèi)容。如果您在每個分支中進入較大的代碼塊,具有多分支的if / else樹或長字符串中包含多個else / if,則它特別受歡迎。


三元運算符,當你分配一個值基于一個簡單的條件變量或與您非常簡短的結果進行多次的決定是常見的。您引用的示例實際上是沒有意義的,因為表達式將在沒有任何額外邏輯的情況下求值為兩個值之一。


好主意:


this > that ? alert(this) : alert(that);  //nice and short, little loss of meaning


if(expression)  //longer blocks but organized and can be grasped by humans

{

    //35 lines of code here

}

else if (something_else)

{

    //40 more lines here

}

else if (another_one)  /etc, etc

{

    ...

不太好:


this > that ? testFucntion() ? thirdFunction() ? imlost() : whathappuh() : lostinsyntax() : thisisprobablybrokennow() ? //I'm lost in my own (awful) example by now.

//Not complete... or for average humans to read.


if(this != that)  //Ternary would be done by now

{

    x = this;

}

else

}

    x = this + 2;

}

一條非常基本的經(jīng)驗法則-您能一口氣理解整個事情還是更好?三元還可以。否則,將其展開。


查看完整回答
反對 回復 2019-11-14
?
慕少森

TA貢獻2019條經(jīng)驗 獲得超9個贊

您發(fā)布的示例沒有特別棘手的地方。


在三元運算符中,將評估第一個參數(shù)(條件條件),如果結果為true,則評估并返回第二個參數(shù),否則,將評估并返回第三個參數(shù)。這些參數(shù)中的每一個都可以是任何有效的代碼塊,包括函數(shù)調(diào)用。


這樣想:


var x = (1 < 2) ? true : false;

也可以寫成:


var x = (1 < 2) ? getTrueValue() : getFalseValue();

這是完全有效的,并且這些函數(shù)可以包含任何任意代碼,無論它是否與返回值相關。此外,三元運算的結果不必分配給任何東西,就像函數(shù)結果不必分配給任何東西一樣:


(1 < 2) ? getTrueValue() : getFalseValue();

現(xiàn)在,只需將它們替換為任意函數(shù),就可以看到與示例類似的東西:


(1 < 2) ? removeItem($this) : addItem($this);

現(xiàn)在,您的最后一個示例實際上根本不需要三進制,因為可以這樣編寫:


x = (1 < 2);  // x will be set to "true"


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

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號