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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用 else if 處理 ESLint 規(guī)則

使用 else if 處理 ESLint 規(guī)則

胡子哥哥 2023-05-19 18:16:14
我有這個(gè)代碼 else/if 代碼       if (_.has($scope.item, 'comment_id')) {          track(one);        } else if (_.has($scope.item, 'post_id')) {          track(two);        } else {          if ($scope.followers) {            track(three);          } else {            track(four);          }        }但是 Eslint 想讓我把它變成這個(gè)        if (_.has($scope.item, 'comment_id')) {          track(one);        } else if (_.has($scope.item, 'post_id')) {          track(two);        } else if ($scope.followers) {          track(three);        } else {          track(four);        }它們是一樣的嗎?
查看完整描述

1 回答

?
繁星淼淼

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個(gè)贊

是的,它們是等價(jià)的。ESLint 足夠聰明,可以檢測(cè)到這一點(diǎn)并因此提出建議。原因是您在構(gòu)造中實(shí)際上只有四種選擇if/else- 當(dāng)代碼不匹配前兩個(gè)條件中的任何一個(gè)時(shí),它將始終執(zhí)行外部


else {

  if ($scope.followers) {

    track(three);

  } else {

    track(four);

  }

}

這只會(huì)導(dǎo)致兩件事之一發(fā)生。提取if ($scope.followers)aselse if遵循完全相同的邏輯路徑。


通過抽象出條件并生成真值表,然后檢查結(jié)果,可以很容易地證明這一點(diǎn)。它可以在紙上完成,但由于您已經(jīng)有了代碼,因此也很容易將其制作為代碼:


function nested(a, b, c) {

  if (a) {

    return "track(one)";

  } else if (b) {

    return "track(two)";

  } else {

    if (c) {

      return "track(three)";

    } else {

      return "track(four)";

    }

  }

}


function chained(a, b, c) {

  if (a) {

    return "track(one)";

  } else if (b) {

    return "track(two)";

  } else if (c) {

    return "track(three)";

  } else {

    return "track(four)";

  }

}


const truthTable = [

  [false, false, false],

  [false, false, true ],

  [false, true , false],

  [false, true , true ],

  [true , false, false],

  [true , false, true ],

  [true , true , false],

  [true , true , true ],

];


for(const [a, b, c] of truthTable) {

  const nestedResult = nested(a, b, c);

  console.log(`called nested() with 

  a=${a}

  b=$

  c=${c}

  result: ${nestedResult}`);

  

  const chainedResult = chained(a, b, c);

  console.log(`called nested() with 

  a=${a}

  b=$

  c=${c}

  result: ${chainedResult}`);

  

  console.log(`matching results?: ${nestedResult === chainedResult}`);

  

  console.log(`------------------------`);

}

或者,您可以生成一個(gè)實(shí)際的真值表來(lái)可視化結(jié)果:


function nested(a, b, c) {

  if (a) {

    return "track(one)";

  } else if (b) {

    return "track(two)";

  } else {

    if (c) {

      return "track(three)";

    } else {

      return "track(four)";

    }

  }

}


function chained(a, b, c) {

  if (a) {

    return "track(one)";

  } else if (b) {

    return "track(two)";

  } else if (c) {

    return "track(three)";

  } else {

    return "track(four)";

  }

}


const truthTable = [

  [false, false, false],

  [false, false, true ],

  [false, true , false],

  [false, true , true ],

  [true , false, false],

  [true , false, true ],

  [true , true , false],

  [true , true , true ],

];


const enrich = truthTable

  .map(row => row.concat(nested(...row), chained(...row))) //add the results of the two calls

  .map(row => row.concat(row[row.length-1] === row[row.length-2])) //compare the last two


const table = document.querySelector("table");

for (const rowData of enrich) {

  const newRow = table.insertRow(-1);

  for (const rowValue of rowData) {

    const cell = newRow.insertCell(-1);

    cell.textContent = rowValue;

  }

}

table {

  border-collapse: collapse;

}


table, th, td {

  border: 1px solid black;

}

<table>

  <tr>

    <th>a</th>

    <th>b</th>

    <th>c</th>

    <th>nested result</th>

    <th>chained result</th>

    <th>results equal</th>

  </tr>

</table>


查看完整回答
反對(duì) 回復(fù) 2023-05-19
  • 1 回答
  • 0 關(guān)注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)