![post-title](https://i.ytimg.com/vi/_RsaNzZFuUU/hqdefault.jpg)
js三元運算子 在 コバにゃんチャンネル Youtube 的精選貼文
![post-title](https://i.ytimg.com/vi/_RsaNzZFuUU/hqdefault.jpg)
Search
今天要來介紹在React中常使用到的 Javascript 語法- 三元運算子 Ternary Operators ... ... <看更多>
Share your videos with friends, family, and the world. ... <看更多>
#1. 條件運算子- JavaScript - MDN Web Docs
條件(三元) 運算子是JavaScript 唯一用到三個運算元的運算子:在一個條件後面會跟著一個問號( ? ),如果條件是truthy (en-US),在冒號( : )前的表達式 ...
#2. [Js] 三元運算符/ 三元運算值 - Medium
三元運算子 用法例項: 如名字表示的三元運算子需要三個運算元。 語法是條件? 結果1 : 結果2;. 這裡你把條件寫在問號(?)的前面後面跟著用冒號(:)分隔的結果1和結果2。
#3. 【Day 23】JavaScript 條件(三元)運算子 - iT 邦幫忙
條件運算子是JavaScript 中唯一需要三個運算元的運算子。 這個運算子接受兩個運算元作為值且一個運算元作為條件。 語法是: 條件? 值1 : 值2.
指定運算子(Assignment Operators). 指定一個值給一個變數. = ex: x = y 將y 指定給x 變數. += -= *= /= %= **=. ex: x += y x = x + y , x y 相加後,指定給x 變數 ...
#5. JavaScript 利用表達式優化你的程式碼 - 卡斯伯
運算子運算子 依據運算元數量,可分為一元、二元甚至是三元運算子,而運算元本身也是屬於表達式,以我們常見的=== 來說就屬於二元運算子。
它是唯一一個需要3 個運算元的JavaScript 運算子:要計算的條件,如果條件為 true 時要執行的表示式,以及如果條件為 false 時要執行的表示式。因為它需要 ...
#7. [JS] JavaScript 運算子(Operator) | PJCHENder 未整理筆記
[JS] JavaScript 運算子(Operator) · 條件判斷(conditional statement) · 比較運算子(comparison operator) · 其餘參數(rest parameter) · 展開 ...
#8. 「三元運算子」不好嗎? - Tempura's Note
Javascript 與?: 雖然上段提到三元運算子常常會創造出低可讀性的程式碼,但 並非 完全 不能用 , 而是避免巢狀 三元運算子. 舉例的話,以下不適合用
#9. 三元、型態比對運算子- Java備忘筆記 - GitBook
三元運算子 Ternary Operator. 三元,顧名思義要放入三個東西。 判斷式? 若判斷為真執行區塊: 若判斷為假執行區塊. 範例程式:. int a = 10;. int b = 7;. int c = 0;.
#10. React小技巧(3) - 三元運算子Ternary Operators - YouTube
今天要來介紹在React中常使用到的 Javascript 語法- 三元運算子 Ternary Operators ...
#11. 7 JS三元運算子 - YouTube
Share your videos with friends, family, and the world.
#12. 三元條件運算子 - Microsoft Learn
瞭解C# 三元條件運算子(`?:`),這會根據布林運算式的結果傳回兩個運算式之一的結果。
#13. 流程控制if else 條件判斷 - JavaScript 入門指南
認識完JavaScript 的基本元素後,我們接下來要學習怎麼控制流程。 這裡介紹三種JavaScript 控制流程的方式:. if / else; switch case; 三元運算子. 首先,讓我們先 ...
#14. 控制流程· 從ES6開始的JavaScript學習生活
而在使用 if 加上 else 時,為了簡化語句,使用三元運算符(Ternary Operator)(?:),來讓程式碼更簡潔,這也只能用於簡單的判斷情況與執行語句時:
#15. js 三元运算子 - 稀土掘金
JavaScript 中的三元运算符是一种简洁的条件语句,也称为条件运算符。它的语法如下: condition ? expr1 : expr2. 其中,condition是一个表达式,它的值将被转换为布尔 ...
#16. PYDOING: JavaScript 快速導覽- 條件運算
JavaScript 的條件運算子(conditional operator) ,測試兩個運算元是否都為true ,或有一個為true ,另有一個三元運算子,若第一個運算元為true ,運算結果就是第二個 ...
#17. CoffeeScript 三元運算子 - 是Ray 不是Array
這篇筆記文章如果對你有幫助, 你可以考慮花30 秒登入LikeCoin 並點擊下方拍手按鈕(最多五下)免費支持與鼓勵我。 或者你可以也可以請我「喝一杯 ...
#18. JS三元运算符怎样判断多个条件的方法原创 - CSDN博客
JS三元运算 符怎样判断多个条件的方法 原创. 2021-11-26 09:34:47. 南北极之间. 码龄9年. 关注. <span class="subtitle">. {{ activeName == 1 ?
#19. 空值結合運算子- 維基百科
JavaScript 最接近的運算子是 ?? , 即"nullish coalescing operator",從ECMAScript第11版引入。當左端運算元不為"nullish" ( null 或 undefined ),取其值作為結果, ...
#20. 三元運算子 - 白科圖鑑
EP23 白科圖鑑|程式超級白JS 系列#5 今晚我想來點,函式炸雞配燒啤! 迫不及待啦~ 第五集要來和大家聊的是Javascript 中的函(韓)式 一起吃起來吧
#21. JS 核心觀念筆記- 運算子
MDN 中運算子的介紹:. 賦值運算子; 比較運算子; 算術運算子; 位元運算子; 邏輯運算子; 字串運算子; 條件(三元)運算子; 逗點運算子; 一元運算子 ...
#22. js三元運算子的問題包括PTT、Dcard、Mobile01
最後網站JavaScript 利用表達式優化你的程式碼- 卡斯伯Blog - 前端則補充:運算子運算子依據運算元數量,可分為一元、二元甚至是三元運算子,而運算元本身 ...
#23. Yiru@Studio - [PHP]38.三元運算使用方式 - - 點部落
方式一: 當值不存在時,給予初始值 //三元運算 $login=$_GET['login'] ?? ''; //當值不存在時存入空值. 此時就不會再跳警告提示了 ...
#24. JavaScript三元運算符作為If / Else語句的捷徑 - EFERRIT.COM
JavaScript 中的條件三元運算符根據某些條件為變量分配一個值,並且是唯一帶有三個操作數的JavaScript運算符。 三元運算符是if語句的替代,其中if和else子句將不同的值 ...
#25. javascript 運算子 - 育將電腦工作室
1-2 javascript 運算子. 一、依據運算元數目. 單元運算子(Unary Operator),例如:i++、-1。 二元運算子(Binary Operator),例如:j - k。 三元運算子(Tenary ...
#26. return 不return,有差嗎? - Lidemy 鋰學院
[JS101] 用JavaScript 一步步打造程式基礎. 課前須知 ... 一樣米養百樣人:變數的各種型態(3:40) ... 一、二、三:三元運算子(Ternary) (6:06).
#27. JQuery 三元運算- IT閱讀
JQuery三元運算語法: ... <script src="http://zengestudy.blog.51cto.com/1702365/js/jquery-3.1.1.js"></script> <script type="text/Javascript"> ...
#28. JavaScript条件(三元)运算符的使用技巧 - 简书
为啥用三元运算符(ternary) condition ? expr1 : expr2 三元运算符用来简化条件判断这个运算符可以用来代替if else条件判断。但是为什么有...
#29. JavaScript 運算子Operators - Fooish 程式技術
位元運算子(Bitwise Operators); 邏輯運算子(Logical Operators); 字串運算子(String Operators); 三元運算子(Conditional (ternary) operator).
#30. 你懂JavaScript 嗎?#2 暖身(๑•̀ㅂ•́)و Part 1 - 運算子、運算式
'; // "Hello Summer!" // 使用字串模板 const greetings_2 = `Hello ${name}!`; // "Hello Summer!" 條件(三元)運算子(conditional / ternary):條件 ...
#31. Javascript 運算子 - Les Meet Ups ESI
三元運算 符其實就是if … else 的簡單… 数组是一种特殊类型的对象。. 在JavaScript 中对数组使用typeof 运算符会返回"object"。. 数组使用数字 ...
#32. 兩個空白當作縮排。 - JavaScript Standard Style
avoid var value = 'hello world'. console.log(value) * **三元運算子(ternary operator)** 在多行的情況下,把`?` 和`:` 和後面敘述放在同一行。 eslint: ...
#33. C 语言中的三元运算符 - freeCodeCamp
原文:Ternary Operator in C Explained [https://www.freecodecamp.org/news/c-ternary-operator/] 开发者们可以使用三元运算符实现多个条件的判断, ...
#34. 讓初學者能更優美編撰JavaScript 的小撇步 - W3HexSchool
一. · 二. 三目運算子(三元運算子/條件運算子) · 三. return 的美妙之處 · 四. for 陳述式/for in/forEach/for of 的效能比較 · 五. 讓for-loop 更加有效率 ...
#35. 現代[JavaScript] 程式設計教學:使用運算子(Operator) - 開源教學
前言 · 自製斷言(Assertion) · 代數運算子(Arithmetic Operator) · 比較運算子(Relational Operator) · 字串運算子 · 邏輯運算子 · 三元運算子(Ternary Operator).
#36. 12-6 流程控制12-7 函式12-8 陣列
12-3 型別. 12-4 變數 ... 位元運算子:& ( 位元AND)、| ( 位元OR)、^ ( 位元XOR)、~ ( 位元 ... JavaScript 提供的typeof 型別運算子可以傳回資料的型別,例如.
#37. JQuery 三元运算 - 阿里云开发者社区
JQuery 三元运算. ... <script src= "js/jquery-3.1.1.js" >< /script >. <script type = "text/javascript" >. function checkAll(){.
#38. Javascript 運算子
Ben jij opzoek naar sex in Maasdriel En wil jij ook niet meer About Us; Cookiebeleid; Veiligheid Gratis sex in Maasdriel. JavaScript 三元條件 ...
#39. 條件Render - React
使用JavaScript 中的運算子如 if 或者三元運算子 來建立表示目前state 的element,然後讓React 根據它們來更新UI。 先看以下兩個component:. function UserGreeting(props) ...
#40. 五個小技巧讓你寫出更好的JavaScript 條件語句(翻譯)
可是當我們有更多紅色水果的選項時,如 cherry (櫻桃)和 cranberries (蔓越莓),難道我們要增加更多的 || 邏輯運算子來判斷? 我們用Array.includes 來改寫一次上面的 ...
#41. vue三元运算之多重条件判断(多个枚举值转译) - 51CTO博客
vue三元运算之多重条件判断(多个枚举值转译),直接上代码:divclass="msgLi"> 组织设置: {{organInfo.partySetup=="1"?"撤销":organInfo.
#42. 三元运算符_百度百科
三元运算 符是软件编程中的一个固定格式,语法是“条件表达式?表达式1:表达式2”。使用这个算法可以使调用数据时逐级筛选。表达式:“()? :”。()中进行二元运算?
#43. C++ 条件运算符? - 菜鸟教程
如果Exp1 为假,则计算Exp3 的值,且Exp3 的计算结果则为整个? : 表达式的值。 ? 被称为三元运算符,因为它需要三个操作数,可以用来代替如下所示的if-else 语句 ...
#44. Kotlin 中的三元条件运算符 - 迹忆客
本文介绍了三元运算符的替代方案,例如if-else 表达式、if-else-if 阶梯、when 表达式和使用Kotlin 的Elvis 运算符。
#45. JS-運算元Operands、運算子Operator、優先性Precedence
剛剛我們說到了Javascript 遵從先乘除後加減規格, 但我們仍然試圖找尋這些奇怪的地方。這裡很需要各位的拆解能力。 console.log(1>2>3); console.log(3>2 ...
#46. [PHP] 三元運算式– Ternary Operator (?:) – 簡化if (符號
簡介. 三元運算子,在許多程式語言都會有,基本上您可以把它想成是if的一種簡化. 直接來看例子比較: // Example usage for: Ternary Operator ...
#47. js 如何用三元运算符优雅的区分(null,undefined) 和(0,false)
当data 不为undefined 和null(不考虑NaN) 的时候我需要给他转换成JSON 字符串{代码...} 然后当遇到data 为0,false 的时候出现bug 了~
#48. java三元运算嵌套 - 腾讯云
取值1 :取值2 三元运算符是if else或者if else if else的简写形式, ... 参考链接: Python运算子python中没有其他语言中的三元表达式,不过有类似的实现方法 其他 ...
#49. Javascript 運算子 - Spielhus Escape Game
運算式與運算子- JavaScript | MDN - Mozilla Developer ... 三元運算符其實就是if … else 的簡單… 该运算中的任何数值运算数都会被转换为位的数。
#50. 布尔运算符- JavaScript 教程 - 网道- 互联网开发文档
且运算符(&&); 或运算符(||); 三元条件运算符(?:) ... 它的运算规则是:如果第一个运算子的布尔值为 true ,则返回第二个运算子的值(注意是值,不是布尔值); ...
#51. 各语言中的三元运算符与golang 对比| Go 技术论坛 - LearnKu
三元运算 符定义三元运算符是软件编程中的一个固定格式,语法是“条件表达式?表达式1:表达式2”。使用这个算法可以使调用数据时逐级筛选。 表达式:“()? :”。
#52. [JS] if…else…的簡短寫法
為三元運算子(Ternary Operator). function getA () {. return (a === 0) ? 'a is zero' : (a === 1) ? 'a is one' : 'other';. }.
#53. 【 程式教學】給初學者的JavaScript 6 小時教學 - Facebook
【 程式教學】給初學者的JavaScript 6 小時教學 大家安安,給初學者的JS 程式教學,終於完成啦!這次新增了一些實作教學,將字幕變成內嵌字幕,方便大家用手機觀看。
#54. JavaScript 從零開始
JavaScript 從零開始Adam Hung [email protected] 關於變數(variable) var ... NOT) 例: !true 為false 例: !false 為true; 三元運算子 ?
#55. 邏輯運算、位元運算
三個運算子。 來看看下面這個程式會輸出什麼? #include <stdio.h> int ...
#56. 無題
条件(三元)运算符是JavaScript 唯一使用三个操作数的运算符:一个条件后跟一个问号(? ... If 運算子- Visual Basic Microsoft Learn if 三元mean ...
#57. 重新思考JAVASCRIPT 三元运算符 - 知乎专栏
人们不喜欢三元运算符的一个原因是它们实在是太奇怪了。作为运算符,就是这样。 JavaScript 有很多二元运算符——作用于两个表达式的运算符。您可能 ...
#58. [JAVA]一元運算子、二元運算子、三元運算子、=運算子
首頁 · JAVA 目錄 · JAVA WEB 目錄 · JAVA 其他未分類目錄 · Grails目錄 · jQuery 目錄 · Apache 目錄 · JavaScript 目錄 ...
#59. C#里面的??(三元运算符)&& Equals() - 都一样* - 博客园
该操作首先求出条件表达式的值(bool类型),为true时调用表达式1,为flase时调用表达式2。其逻辑为:“如果为真执行第一个,否则执行第二个。
#60. JavaScript 語言學習筆記 - Joker的部落格- 痞客邦
三元運算子 (Conditional (ternary) operator). condition ? val1 : val2. 如果condition 是true, 就傳回val1 的結果,否則傳回val2 的結果。例如:
#61. JavaScript教學- 運算子(Operators) - 下 - 小殘的程式光廊- 痞客邦
介紹JavaScript中的運算子(Operators)的用法,包含邏輯運算子(Logical ... 條件運算子(Conditional Operator)是唯一的三元運算子,語法如下:
#62. Re: [討論] 寫三元判斷式code review被打槍- 看板Soft_Job
這邊不針對效能,也不針對說階層太多,應該用什麼方式重構之類的只是看到有人提到巢狀的三元運算子,閱讀性太差,應該改回用if else寫我只是好奇兩者 ...
#63. Javascript三元條件運算符_優就業 - 每日頭條
今天談一個Web前端(http://www.ujiuye.com/zt/webqianduan/)小知識點,三元運算符。三元運算,顧名思義會有三個要素,表達式的大致組成為condition ...
#64. [PERL] 06-運算子#2 - 精讚
(三元)狀態運算子?: 16. 指派運算子,有= += -= *= 等. 17. 指定運算=>. 18.清單運算子. 19.符號運算子not. 20 邏輯運算子and. 21.邏輯運算子or xor.
#65. 10 運算關係式Expression(2) - 祈泊的部落格
10 運算關係式Expression(2) [10-1邏輯運算] 用於邏輯運算的邏輯運算子(Logical Operators) ... 使用if-else三元運算子程式較簡潔,但不易懂。
#66. 賦值運算子 - Js Tips
If-else (使用三元運算符). 這是我們一般常見的寫法:. var newValue; if (value > 10) newValue = 5; else newValue = 2;. 我們可以使用三元運算符 ...
#67. Javascript 基礎打底系列(三) - 邏輯運算子 - 小雕雕的家- 痞客邦
Javascript 基礎打底系列(三) - 邏輯運算子,與短路邏輯(short circuit logic) 的應用 · 1. 用|| 來設定變數預設值 · 2. 用&& 來檢查物件與屬性值 · 3. 用|| ...
#68. JavaScript 快速空判斷 - Ruyut 鹿遊
不過其實否定句沒有那麼直覺,所以我們可以在前面再加上一個驚嘆號,在否定運算子判斷完成後將結果相反,true => false, false => true,所以在三元 ...
#69. 三元運算子– V.H
三元運算子 真是個好用的東西. 可以節省一堆if else判斷式. 來記錄一些常用的三元運算. 基本公式. 閱讀更多» · valenhu. 頁面.
#70. Javascript 用法 - Brandmemore ✍️
标签JavaScript 運算式有下列幾種種類: 算術: 解析出數字, 例如。 ... JavaScript 拥有二元和一元运算符,和一个特殊的三元运算符(条件运算符)。
#71. 02【JS基礎】-【 運算子】運算子/ 算數運算子/ 遞增和遞減運算 ...
二,JavaScript 流程控制-分支 · 1. 流程控制 · 2. 順序流程控制 · 3. 分支流程控制if 語句 · 4. 三元表達式 · 5. 分支流程控制switch 語句.
#72. JavaScript概念三明治: 基礎觀念、語法原理一次帶走! | 誠品線上
變數的宣告型別介紹函式基礎介紹運算子基礎介紹常用二元運算子介紹運算子的相依性與優先序強制轉型Falsy Value與Truthy Value 條件判斷式迴圈三元運算子總結{第二篇} ...
#73. coding-standards/legacy/javascript.md at master - GitHub
本文件依照Joomla 編碼規範中的Javascript 指導原則修改而來。 ... 串接運算子應放在每個字串片段的結尾,此時串接符後方不需空格。 ... 三元運算子.
#74. 無題
使用正则表达… dichte edelstahl g/mm3 js 三元表达式多个mean Expressões e operadores - JavaScript MDN ... WebJan 30, 2023 · JavaScript 三元條件運算子.
#75. Javascript 運算子 - Galerie LTK
Javascript 運算子. 剰余(%) - JavaScript | MDN - Mozilla Developer ... 条件(三元)运算符是JavaScript 唯一使用三个操作数的运算符:一个条件 ...
#76. [第二週] 基礎JavaScript - 01 邏輯、位元運算 - Yakim shu
不要把位元運算子 | 、 & 跟邏輯運算子 || 、 && 搞混了,可以把位元運算子理解成2 進位版的邏輯比較。 | 位元OR. 當成位元間的 || ,以 0011 | 1001 ( 3 ...
#77. [ PHP ] – #教學- 三元運算子? : - 混水摸魚
三元運算子 ?: 條件式?陳述1:陳述2 等同於if(條件式){陳述1}else{陳述2} [php] <?php $a=59; $b=60; echo '59分是否及格'; echo $a>=60?
#78. [Java] 5-7 三元運算子ternary operator - 給你魚竿- 痞客邦
Java的三元運算子和C語言的不一樣是用來給值的介紹如下三元運算子ternary operator使用方法是變數在給值時用= 後面加上?: 來條件給值變數= (條件) ?
#79. js中三元运算符?:使用详解
JavaScript 三元运算 符,三元运算符又称为三目运算符,指的是根据不同的条件,执行不同的操作/返回不同的值。
#80. vue三元运算之多重条件判断方式(多个枚举值转译) - 脚本之家
这篇文章主要介绍了vue三元运算之多重条件判断方式(多个枚举值转译),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方, ...
#81. Laravel 後端PHP架站,API Server與訂閱軟體全攻略\01 - BiliBili
[補充2]安裝Node. js 與npm. Laravel 後端PHP架站,API ... Laravel 後端PHP架站,API Server與訂閱軟體全攻略\01. 3 -- ... 三元運算子 與單行條件判斷.
#82. 10個簡單方法讓你的代碼更優雅 - 資訊咖
當我們在JavaScript中定義變量和函數時,我們應該以清晰簡潔的方式進行 ... 為了簡化條件語句,我們可以使用三元運算符或者邏輯運算符,判斷語句的 ...
#83. 2023年Banking工作職缺| CakeResume 求職平台
多方政府單位輔導,金管會、FTS金融創新園區、工研院、亞洲矽谷及TACC+ 3.結盟多家銀行元大、新光、 ... 並且著重在行動平台與雲端運算的整合,提供完整的商業化服務。
#84. 进制转换器— 在线工具
本文介绍了二进制、十进制、八进制、十六进制四种进制之间相互的转换,大家在转换的时候要注意转换的方法,以及步骤,特别是十进制转换为期于三种进制之间,要分为整数 ...
#85. 正則表達式生成- cboard
MKLab在线工具提供Regex正则表达式在线测试生成功能,可以使用在JS正则,Java正则 ... 正则表达式- 简介正则表达式- 语法正则表达式- 元字符正则表达式- 运算符优先级 ...
#86. PhoneGap+Node.js整合實作!用JavaScript做出跨平台手機App和雲端運用
... if ɿ̩א٫ else ɿ̩༁̥ࠦϞɓБd̙˸ʔᄳɽֹܼj if(x === 3) console.log('it is 3'); ... ৬ΐ 0-20 00 JavaScript ਿ͉ٝᗆ 條件判斷可以是數字 p.0-20 三元運算子「?
#87. JavaScript技術手冊(電子書) - 第 2-38 頁 - Google 圖書結果
左運算元若判定為假,就可以確認邏輯不成立,不用繼續運算右運算元;||是左運算元判斷 ... 數位設計上有 AND、OR、NOT、XOR 與補數運算,JavaScript 提供對應的位元運算子, ...
#88. JavaScript第一次學就上手(電子書) - 第 2-23 頁 - Google 圖書結果
2-4-2 字串運算子字串運算子用來將兩個或多個字串連接成一個字串,JavaScript ... 2-4-3 遞增/遞減運算子遞增運算子(++)用來將運算元的值加 1,其語法如下: ᰞ 前置遞增.
#89. JavaScript+jQuery Mobile+Node.js跨平台網頁設計範例教本(電子書)
變數名稱除開頭字元外,可以是英文字母、數字和「_」符號,不能使用句點「.」,句點是保留給物件使用的運算子。變數的宣告在 JavaScript 程式碼是使用【var】指令宣告變數 ...
#90. 精通JavaScript 第三版(電子書) - 第 480 頁 - Google 圖書結果
... 387 module object(模組物件), 188 module system(模組系統), 185 modulo (remainder) operator(Mod 運算子,取餘數的運算), 16,38, 323, 443, 454, 457 Mongolian ...
js三元運算子 在 Re: [討論] 寫三元判斷式code review被打槍- 看板Soft_Job 的推薦與評價
這邊不針對效能,也不針對說階層太多,應該用什麼方式重構之類的
只是看到有人提到巢狀的三元運算子,閱讀性太差,應該改回用if else寫
我只是好奇兩者的可讀性有差很多嗎?
以下只是舉例,不是指實務上會真的這樣寫
(1) 三元運算子:
int i = condition1
? condition2
? condition3
? 1
: 2
: 3
: 4;
(2) if else:
int i;
if (condition1) {
if (condition2) {
if (condition3) {
i = 1;
} else {
i = 2;
}
} else {
i = 3;
}
} else {
i = 4;
}
單就上面的範例來說,我覺得兩者可讀性差不多,還是只是因為我看習慣產生的錯覺 XD
以我自己的觀點來看,像這種條件式指派單一變數值的情境,三元寫起來比較順手
也不用擔心像在寫 if else 時,因漏寫了 else 導致有情況沒指派到值
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.204.160.44 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1672157770.A.D00.html
老實說我也是覺得明顯一比較好啊
只是看前面文章和推文,想說講差不多來測一下風向 XD
實務上來說我也是會用 Array Map,或是拆成 Function 來攤平巢狀結構
大部分的情況下寫到兩層就是極限
而且真寫成巢狀,以這案例會在 Condition 加 Not 來對調順序
所以從推文來看,問題點不在巢狀三元,而是只要是寫成多重巢狀都不好閱讀
有些情境在相同結構下,反而有人會覺得改寫 if else 卻降低可讀性
就看到前面說巢狀三元可讀性劣於if else
所以故意寫一個很醜的結構來看一下相同結構下,是否真的三元比較難閱讀 XD
我認真說,如果是專案公司,你可能高估了正常人的水平了
多的是能動就好(嘆氣
以我的經驗,我之前同事如果修改要在 if 內部加判斷就直接加了
多半不會條件反轉
另外 else if 本身就是巢狀的,有些程式語言本身沒有提供 else if 語法
它們的 else if 是以下程式碼排版後產生看起來攤平的效果
if (condition1) {
} else {
if (condition2) {
}
}
而且兩種寫法都反轉後,if else 也真未必有比較好閱讀
例如:
三元運算子:
int i = condition1
? 1
: condition2
? 2
: condition3
? 3
: 4;
if else:
int i;
if (condition1) {
i = 1;
} else if (condition2) {
i = 2;
} else if (condition3) {
i = 3
} else {
i = 4;
}
剛 Google 一下,Guard Clauses 我也很愛用
只是我之前不知道它叫 Guard Clauses
這邊來說明一下 else if 是怎麼來的
1.
完整程式長這樣:
if (condition1) {
} else {
if (condition2) {
} else {
}
}
2.
我們已知 else 後面只有單行可以不用加大括弧,而 if else 語句將之視為一個單行
所以我們將第一個 else 的大括弧去掉變成以下這樣
if (condition1) {
} else
if (condition2) {
} else {
}
}
3. 最後再用排版將第二個 if 放置在第一個 else 後面,else if 就誕生了
if (condition1) {
} else if (condition2) {
} else {
}
所以我前面說 else if 本質上還是巢狀結構,只是靠排版攤平
不過有些程式語言像 PHP 是真的有提供 elseif 這個關鍵詞
本文一開始就加一堆但書,並註名只是舉例,非實務上的寫法 XD
實際上當然是 Array Map、Function 和 Guard Clauses 等方法來優化寫法 XD
推文提到的比較好的寫法,才是我實務上真正在寫的
大部分情況我最多只會寫到兩層,且不會用成波動拳結構
我只是因為前面文章有推文提到巢狀三元運算子容易漏看,且不好閱讀
而改回寫成 if else
關於容易漏看這部分我是疑惑為什麼會容易漏看
至於可讀性部分,兩種方法當然都很糟
但看起來也不是每個人都認為巢狀 if else 可讀性優於巢狀三元運算子
實際上真正影響閱讀的多層巢狀這件事,真的多層巢狀起來
if else 和 三元運算子都不好閱讀
※ 編輯: CloudyWing (203.204.160.44 臺灣), 12/28/2022 23:35:33
... <看更多>