当前位置: 首页 > Web前端 > JavaScript

【JavaScriptWeekly#570】反思三元运算符

时间:2023-03-26 22:01:42 JavaScript

馃コ娆㈣繋鎰熷叴瓒g殑灏忎紮浼翠竴璧峰仛鐐规湁鎰忎箟鐨勪簨鎯咃紒鎴戝彂璧蜂簡涓€涓瘡鍛ㄧ炕璇戦」鐩€備粨搴撳湴鍧€鍜岃闂湴鍧€杩樺緢缂哄織鍚岄亾鍚堢殑灏忎紮浼淬€傝繖绾补鏄釜浜哄叴瓒c€傚綋鐒讹紝涔熸湁鍔╀簬鎻愰珮鑻辫鍜屽墠绔妧鑳姐€傝姹傦細鑻辫涓嶈兘宸殑绂昏氨锛実ithub绮鹃€氾紝鏈夋瘏鍔涳紝璋﹁櫄锛屽仛浜嬫湁璐d换鎰熴€傛兂鍙備笌鐨勬湅鍙嬪彲浠x绉佷俊鎴栬€呭彂issue娑堟伅鍒颁粨搴撱€傛垜鐨勫崥瀹㈣繕鏈夊叿浣撶殑涓汉鑱旂郴鏂瑰紡锛歞aodaolee.cn鍓嶈█鎴戜滑閮藉笇鏈涜嚜宸卞啓鐨勪唬鐮佹竻鏅扮畝娲侊紝浣嗘湁鏃跺€欐垜浠彧鑳介€夋嫨涓や釜涔嬩竴锛氭竻鏅版垨鑰呯畝娲併€傛洿灏戠殑浠g爜琛屾剰鍛崇潃鏇村皯鐨勯殣钘忛敊璇紝浣嗘竻鏅般€佸彲璇荤殑浠g爜鏇存槗浜庣淮鎶ゅ拰淇敼銆備竴鑸潵璇达紝浼犵粺鏅烘収鍛婅瘔鎴戜滑锛屾竻鏅拌儨杩囩畝娲併€傚鏋滄偍蹇呴』鍦ㄥ彲璇绘€у拰绠€娲佹€т箣闂村仛鍑洪€夋嫨锛岃閫夋嫨鍙鎬с€傛墍浠ュ緢澶氫汉瀵逛笁鍏冭繍绠楃鎸佹€€鐤戞€佸害涔熶笉鏄病鏈夐亾鐞嗙殑銆傚綋鐒讹紝瀹冩瘮if璇彞鏇寸畝娲侊紝浣嗕篃寰堝鏄撳皢涓夊厓璇彞鍐欐垚涓€鍫嗙嫍灞庛€傛墍浠ュ湪澶勭悊闂鐨勬椂鍊欒灏忓績銆傛垜閫氬父鏇村枩娆f璇彞锛屽敖绠″畠鍦ㄥ彲璇绘€ф柟闈㈡湁涓€涓皬闂銆備笁鍏冨鏉傚害閭d箞涓轰粈涔堟湁浜涘紑鍙戜汉鍛樹細鎬€鐤戜笁鍏冭繍绠楃鍛紵璁╂垜浠粩缁嗙湅鐪嬪叾涓殑涓€浜涖€傛€紓浜轰滑涓嶅枩娆笁鍏冭繍绠楃鐨勫師鍥犱箣涓€鏄畠浠お鎬紓浜嗐€侸avaScript鏈夎澶氫簩鍏冭繍绠楃鈥斺€斾綔鐢ㄤ簬涓や釜琛ㄨ揪寮忕殑杩愮畻绗︺€傚湪杩欓噷鎻愬埌绠楁湳杩愮畻绗︼紝渚嬪+銆?銆?鍜?锛屼互鍙婂竷灏旇繍绠楃锛屼緥濡?&銆亅|鍜?==锛屾€诲叡鑷冲皯鏈?8涓簩鍏冭繍绠楃锛堝彇鍐充簬ECMAScript鐨勫綋鍓嶇増鏈級銆傚畠浠娇鐢ㄨ捣鏉ュ緢鐩磋锛氬乏杈规槸琛ㄨ揪寮忥紝杩愮畻绗︾鍙凤紝鍙宠竟鏄〃杈惧紡銆備竴鍏冭繍绠楃杈冨皯锛屼絾瀹冧滑涔熶笉閭d箞濂囨€€傝繖鏄惁瀹氳繍绠楃锛?銆傛偍鍙兘杩樹娇鐢ㄨ繃+鍜?鐨勪竴鍏冨舰寮忥紝渚嬪-1銆傚ぇ澶氭暟鎯呭喌涓嬶紝瀹冧滑瀵圭鍙峰彸渚х殑琛ㄨ揪寮忚繘琛屾搷浣滐紝浣跨敤璧锋潵鏇存柟渚裤€傞【鍚嶆€濅箟锛屼笁鍏冭繍绠楃瀵逛笁涓〃杈惧紡杩涜杩愮畻銆傛墍浠ユ垜浠敤涓や釜绗﹀彿鏉ュ啓瀹冿細锛熷拰锛氥€傚惁鍒欙紝鎴戜滑鏃犳硶鍒嗚鲸涓棿琛ㄨ揪寮忕殑寮€濮嬪拰缁撴潫浣嶇疆銆傛墍浠ュ啓娉曟槸杩欐牱鐨勶細(/*绗竴涓〃杈惧紡*/)?(/*绗簩涓〃杈惧紡*/):(/*绗笁涓〃杈惧紡*/)鍦ㄧ湡瀹炲満鏅腑锛屽畠鐪嬭捣鏉ュ儚杩欐牱锛歝onstprotocol=(request.secure)?'https':'http';濡傛灉绗竴涓〃杈惧紡涓衡€渢ruthy鈥濓紝鍒欎笁鍏冭В鏋愪负绗簩涓〃杈惧紡鐨勫€硷紝鍚﹀垯瑙f瀽涓虹涓変釜琛ㄨ揪寮忕殑鍊笺€備絾杩欏苟涓嶆槸瀹冨敮涓€鐨勬€紓涔嬪銆傚ぇ澶氭暟浜屽厓杩愮畻绗﹀叿鏈変竴鑷寸殑绫诲瀷锛氱畻鏈繍绠楃澶勭悊鏁板瓧锛屽竷灏旇繍绠楃澶勭悊甯冨皵鍊硷紝浣嶈繍绠楃涔熷鐞嗘暟瀛椼€傚浜庤繖浜涳紝涓や晶鐨勭被鍨嬬浉鍚屻€備絾鏄笁鍏冭繍绠楃鏈夊鎬殑绫诲瀷锛氫娇鐢ㄤ笁鍏冭繍绠楃锛岀浜屼釜鍜岀涓変釜琛ㄨ揪寮忓彲浠ユ槸浠讳綍绫诲瀷锛屼絾瑙i噴鍣ㄦ€绘槸灏嗙涓€涓浆鎹负甯冨皵鍊笺€傚浜庡紑鍙戜汉鍛樻潵璇达紝杩欏緢濂囨€€傚鍒濆鑰呬笉鍙嬪ソ涓巌f璇彞涓嶅悓锛屼笁鍏冭鍙ュ緢闅捐В閲婁负浼娉曘€備緥濡傦紝鍋囪鎴戜滑鏈夎繖鏍蜂竴涓猧f璇彞锛歩f(someCondition){takeAction();}else{someOtherAction();}濡傛灉someCondition涓虹湡锛屽垯璋冪敤鍑芥暟takeAction锛屽惁鍒欒皟鐢ㄥ嚱鏁皊omeOtherAction銆傜浉姣旇緝鑰岃█锛屼笁鍏冪殑鐗圭偣涓嶆槸寰堟槑鏄俱€備笁鍏冭繍绠楃铏界劧鐢辩绉樼鍙风粍鎴愶紝浣嗚璧锋潵鍗翠笉鍍忔甯哥殑鑻辫璇硶銆傚浜庡垵瀛﹁€呮潵璇达紝杩欏彲鑳芥湁鐐逛护浜哄ご鐤笺€備笉鍙鐨勪笁鑳炶儙鍗充娇鎮ㄤ笉鏄垵瀛﹁€呬篃寰堥毦闃呰銆傜壒鍒槸涓夋嫭鍙风殑闀胯〃杈惧紡锛歝onstten=Ratio.fromPair(10,1);constmaxYVal=Ratio.fromNumber(Math.max(...yValues));constminYVal=Ratio.fromNumber(Math.min(...yValues));constyAxisRange=(!maxYVal.minus(minYVal).isZero())锛焧en.pow(maxYVal.minus(minYVal).floorLog10()):ten.pow(maxYVal.plus(maxYVal.isZero()?Ratio.one:maxYVal).floorLog10());寰堥毦鐪嬪嚭鍙戠敓浜嗕粈涔堛€備笁鍏冪粍涓殑姣忎釜琛ㄨ揪寮忚嚦灏戞湁涓や釜閾惧紡鏂规硶璋冪敤銆傛洿涓嶇敤璇村祵濂楀湪鏈€缁堣〃杈惧紡涓殑鍙︿竴涓笁鍏冪粍浜嗐€傛垜涓嶅缓璁綘鍐欒繖鏍风殑浠g爜锛佸綋鐒讹紝鎴戜滑鍙互閫氳繃娣诲姞绌烘牸鍜屾崲琛屼娇鍏剁◢寰ソ涓€鐐癸細constten=Ratio.fromPair(10,1);constmaxYVal=Ratio.fromNumber(Math.max(...yValues));constminYVal=Ratio.fromNumber(Math.min(...yValues));constyAxisRange=!maxYVal.minus(minYVal).isZero()锛焧en.pow(maxYVal.minus(minYVal).floorLog10()):ten.pow(maxYVal.plus(maxYVal.isZero()?Ratio.one:maxYVal).floorLog10());姝eMartinFowler鎵€璇达細浠讳綍鍌荤摐閮藉彲浠ョ紪鍐欒绠楁満鍙互鐞嗚В鐨勪唬鐮侊紝鍙湁浼樼鐨勭▼搴忓憳鎵嶈兘缂栧啓鍑轰汉绫诲彲浠ョ悊瑙g殑浠g爜銆傚鏋滅湡鐨勫ソ鍚楋紵涓夊厓缁勫悇鏈夌己鐐癸紝浣嗚繕鏄湁涓€浜涗紭鐐圭殑锛氫竴鑸娇鐢ㄤ笁鍏冪粍鐨勬渶澶у師鍥犳槸绠€娲佺殑if璇彞涔熼€傜敤浜庝笁鍏冪粍鐨勪綅缃€傚綋鐒讹紝瀹冧滑杩樻槸鏈夊緢澶у尯鍒殑銆傝鎴戜滑鐪嬩袱娈典唬鐮侊細//ifstatementletresult;if(someCondition){result=calculationA();}else{result=calculationB();}//涓夊厓甯搁噺result=(someCondition)?璁$畻A():璁$畻B();浠庢煇绉嶈搴︽潵鐪嬶紝杩欎袱娈典唬鐮佹槸绛変环鐨勩€傚湪杩欎袱娈典唬鐮佺殑鏈€鍚庯紝涓€涓粨鏋滃彉閲忓皢琚缃负涓€涓€硷細calculationA()鎴朿alculationB()鐨勮繑鍥炲€笺€備絾浠庡彟涓€涓搴︽潵鐪嬶紝杩欎袱涓緥瀛愭槸瀹屽叏涓嶅悓鐨勶細if鏄竴涓鍙ワ紝鑰屼笁鍏冩槸涓€涓〃杈惧紡锛屾崲鍙ヨ瘽璇达細琛ㄨ揪寮忔€绘槸璁$畻鍑烘煇涓€硷紝瀹冩槸涓€涓崟涓€鐨勪唬鐮佸潡锛岃€屽0鏄庝笉鏄€傝繖鏄竴涓噸瑕佺殑姒傚康銆傝〃杈惧紡鐨勮绠楃粨鏋滀负涓€涓€硷紝鑰屽0鏄庝笉鑳藉皢璇彞鐨勭粨鏋滃垎閰嶇粰鍙橀噺鎴栧皢璇彞鐨勭粨鏋滀綔涓哄嚱鏁板弬鏁颁紶閫掋€俰f鏄鍙ワ紝涓嶆槸琛ㄨ揪寮忋€傚湪鏌愮绋嬪害涓婏紝杩欏氨鏄嚱鏁板紡缂栫▼鐨勬牳蹇冩€濇兂銆備负浜嗛伩鍏嶄唬鐮佹棤褰腑浜х敓鐨勫皬闂锛屼娇鐢ㄨ鍙ユ潵閬垮厤涓€浜涢棶棰樸€傛垜鏇村枩娆㈠敖鍙兘浣跨敤绾嚱鏁般€傚鏋滀竴涓嚱鏁版槸绾嚱鏁帮紝閭d箞鐭ラ亾瀹冮櫎浜嗛€昏緫鍜岃繑鍥炲€间粈涔堥兘涓嶅仛灏辫冻澶熶簡銆傚啀鐪嬭繖娈典唬鐮侊細if(someCondition){takeAction();}else{someOtherAction();}takeAction鍜宻omeOtherAction娌℃湁杩斿洖鍊硷紝浼氳烦鍑哄綋鍓嶅潡锛岄偅涔堜細涓嶄細閫犳垚涓€瀹氱殑闅愭偅鍛紵鍐嶇湅鐪嬩笁鍏冭繍绠楃锛屾垜浠枩娆㈣〃杈惧紡锛屽洜涓鸿〃杈惧紡姣旇鍙ユ洿鍙粍鍚堛€傛垜浠彲浠ヤ娇鐢ㄨ繍绠楃鍜屽嚱鏁颁粠绠€鍗曠殑琛ㄨ揪寮忔瀯寤哄鏉傜殑琛ㄨ揪寮忋€備緥濡傦紝鎴戜滑鍙互浣跨敤杩炴帴杩愮畻绗︽瀯寤哄鏉傜殑瀛楃涓诧細('

'+page.title+'

');鎴戜滑鍙互灏嗘琛ㄨ揪寮忎綔涓哄嚱鏁板弬鏁颁紶閫掋€傛垨鑰呮垜浠彲浠ヤ娇鐢ㄦ洿澶氱殑杩愮畻绗﹀皢瀹冧笌鍏朵粬琛ㄨ揪寮忕粍鍚堣捣鏉ワ紝缁勫悎琛ㄨ揪寮忔槸缂栧啓浠g爜鐨勫ソ鏂规硶銆備緥濡傦紝if璇彞鍜宖or寰幆涔嬮棿娌℃湁浠讳綍鍏崇郴锛屼絾鍙互闅忔剰宓屽銆傝〃杈惧紡鏇村儚鏄箰楂樼Н鏈ㄣ€傚畠浠殑鍒涘缓鏂瑰紡鏄湁闄愮殑锛岄《閮ㄧ殑灏忓潡杩炴帴鍒扮爾鍧楀簳閮ㄧ殑闂撮殭銆備絾鏄竴鏃﹁繛鎺ヨ捣鏉ワ紝鐮栧潡灏变細褰㈡垚鏂扮殑褰㈢姸銆傚苟涓旇褰㈢姸鍙互涓庡叿鏈夌浉鍚岄厤缃殑浠讳綍鍏朵粬褰㈢姸浜掓崲銆傝€冭檻涓嬪浘銆傛垜浠湁涓や釜鐩歌繛鐨勫舰鐘躲€傝櫧鐒跺舰鐘舵槸鐢变笉鍚岀殑鍧楃粍鎴愮殑锛屼絾鏈€缁堢殑褰㈢姸鏄竴鏍风殑銆傛崲鍙ヨ瘽璇达紝瀹冧滑鏄彲浠ヤ簰鎹㈢殑銆傚悓鏍凤紝琛ㄨ揪寮忓彲浠ヤ笌鍏舵眰鍊肩粨鏋滀簰鎹€傚浣曡绠椾笉閲嶈锛岄噸瑕佺殑鏄粨鏋滐細濡備綍閫夋嫨鎴戣兘缁欑殑寤鸿鏄€冭檻鍥㈤槦鐨勫紑鍙戣鑼冦€佺紪鐮侀鏍煎拰鏁堢巼锛屾潈琛″彲鑳藉嚭鐜扮殑闂锛堝浠g爜鍧椼€佷綔鐢ㄥ煙绛夛級.璇村埌鍏朵粬鐨剅eturn锛屾垜寤鸿鍦╥f璇彞涓姞鍏eturn锛歩f(someCondition){returnresultOfMyCalculation();}return浼氬皢鍑芥暟璋冪敤瑙f瀽涓轰竴涓€硷紝灏嗗嚱鏁拌皟鐢ㄨВ鏋愪负涓€涓〃杈惧紡銆傝繖灏卞儚鍙橀噺璧嬪€笺€備笁鍏冧紭鍖栧鏋滀綘鐨勪笁鍏冨緢闀匡紝鐗瑰埆鎺ㄨ崘鎷嗗垎锛歝onstten=Ratio.fromPair(10,1);constmaxYVal=Ratio.fromNumber(Math.max(...yValues));constminYVal=Ratio.fromNumber(Math.min(...yValues));//鍒涘缓鍥涗釜鍙橀噺constrangeEmpty=maxYVal.minus(minYVal).isZero();constroundRange=ten.pow(maxYVal.minus(minYVal).floorLog10());constzeroRange=maxYVal.isZero()锛烺atio.one:maxYVal;constdefaultRng=ten.pow(maxYVal.plus(zeroRange).floorLog10());//constyAxisRange=!rangeEmpty?roundRange:defaultRng;濡傛灉浣犺寰楄繖瀵艰嚧浜嗘洿澶氱殑鍙橀噺澹版槑锛屼綘鍙互杩欐牱鍋氾細constten=Ratio.fromPair(10,1);constmaxYVal=Ratio.fromNumber(Math.max(...yValues));constminYVal=Ratio.fromNumber(Math.min(...yValues));//鍒涘缓涓や釜鍑芥暟constrangeEmpty=maxYVal.minus(minYVal).isZero();constroundRange=()=>ten.pow(maxYVal.minus(minYVal).floorLog10());constdefaultRng=()=>{constzeroRange=maxYVal.isZero()锛烺atio.one:maxYVal;returnten.pow(maxYVal.plus(zeroRange).floorLog10());};//缁勫悎甯搁噺yAxisRange=锛佽寖鍥寸┖锛焤oundRange():defaultRng();浣嗚€佸疄璇达紝濡傛灉涓夊厓宓屽澶锛屾垜浼氭帹鑽愪娇鐢╯witch-case