JavaScript 短路運(yùn)算的實(shí)現(xiàn)
由來
- 講一下本篇的由來:
- 剛剛啟一個帶有子服務(wù)的主服務(wù):base項(xiàng)目上的代碼,訴求是這樣子的:子服務(wù)-端口號
:8599
需要從主服務(wù)-端口號:8001
登錄進(jìn)入。主服務(wù)base有一個判斷工作空間的配置,其他子服務(wù)無工作空間的業(yè)務(wù),只有子服務(wù)-:8599
有。正常情況下判斷一下當(dāng)前服務(wù)的routeBase,再合并一下基礎(chǔ)配置:比如setting
設(shè)置,lang
語言,message
子服務(wù)訂閱的主服務(wù)的消息等等,和當(dāng)前子服務(wù)的定制化設(shè)置,就實(shí)現(xiàn)了不同子服務(wù)的不同服務(wù)設(shè)置。 - 但是我啟動了好多次,啟起來的總是主服務(wù)的base項(xiàng)目,啟動不起來子服務(wù)-
:8599
brose
(先說一下:最后解決竟是因?yàn)榫彺娴脑?,可把本猿搞得哭笑不得。但是這期間我竟對短路運(yùn)算符起了疑心并做了修改的嘗試,我也真是醉了,服了自己。那好吧,想著雖然短路運(yùn)算那么常見,簡單,卻害的本猿調(diào)試懷疑了一會,這不行,我必須寫一下)
- 最后在后面附上導(dǎo)致本猿調(diào)試半天的代碼
- 好了,先講一下干干的知識點(diǎn)
&& 和 || 也叫短路
- 短路&&: 只要碰到了假值(false),就會短路,并返回該假值, 只要短路,不會繼續(xù)執(zhí)行后面的表達(dá)式。
- 短路||: 只要碰到了真值(true),就會短路,并返回該真值, 只要短路,不會繼續(xù)執(zhí)行后面的表達(dá)式。(一般用作默認(rèn)值)
注意
注意:假值有以下6個: null
undefined
NaN
false
0
''
場景代碼
&&
console.log('abc' && null); // null console.log(null && 'abc'); // null console.log(null && undefined); // null console.log(undefined && null); // undefined
||
console.log(true || false); // true console.log(NaN || 1); // 1 console.log('abc' || 123); // ‘a(chǎn)bc' console.log(0 || ''); // '' console.log('' || '_brose_'); //'_brose_'
真值短路,短路或 || 經(jīng)常用來設(shè)置函數(shù)參數(shù)的默認(rèn)值
function add(a, b) { // 真值短路 // 短路或 || 經(jīng)常用來設(shè)置函數(shù)參數(shù)的默認(rèn)值 a = a || 0; b = b || 0; console.log(a + b); } add(); // 0 add(1); // 1 add(1, 2); // 3 add(100, 200); // 300
發(fā)生這次記錄的項(xiàng)目代碼
/* * @Descripttion: 頭部的功能列表,不同項(xiàng)目根據(jù)routeBase,顯示頂部設(shè)置配置 * @version: * @Author: Anne WM Zhang * @Date: 2022-05-25 12:33:09 * @LastEditors: Anne WM Zhang * @LastEditTime: 2022-06-14 12:03:45 */ import config from './config' const projectName = config.routeBase || '_brose_' const common = { setting: true, lang:true, message: true } const setting: Record<string, any> = { '_brose_': { workSpace: true, lang: false }, '_pf_': {}, } export default projectName ? Object.assign(setting[projectName], common) : common
- 就是這句話,這么肯定的一句話:
(由于我是在主服務(wù)base上自己的分支本地開發(fā)跨域測試,所以在config.routeBase
的后面加了一個短路運(yùn)算 || 'brose',為了本地跨域進(jìn)入開發(fā)環(huán)境的_brose_:即本案例的子服務(wù)-端口號:8599
, || 'brose'并不會發(fā)到生產(chǎn))
const projectName = config.routeBase || '_brose_'
這段代碼應(yīng)該,而且在我本地跨域進(jìn)入開發(fā)環(huán)境的_brose_子項(xiàng)目運(yùn)行結(jié)果實(shí)際也是:
console.log('' || '_brose_'); //'_brose_'
在我本地開發(fā)分支的情況下,config.routeBase 值為空,也就是運(yùn)算符的左半邊為空,即假值是空 '' ,那么|| 就會取表達(dá)式后面的值即 'brose' 所以,這段代碼毋庸置疑。我卻去懷疑為什么沒有啟動'brose',是因?yàn)檫@段代碼沒生效。結(jié)果竟然卻是我上上次的瀏覽緩存還在base ,沒有清除緩存。所以在來回切換環(huán)境,一定要清除緩存,有空研究一下,怎么能迅速正確的清理完緩存,我目前就是用瀏覽器自帶的:清空緩存并硬性重新加載。小伙伴們也有這種清緩存造成的煩惱,有什么好的方法,可以評論分享給我哇。
結(jié)尾
到此這篇關(guān)于JavaScript 短路運(yùn)算的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)JavaScript 短路運(yùn)算內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
微信小程序頁面?zhèn)鞫鄠€參數(shù)跳轉(zhuǎn)頁面的實(shí)現(xiàn)方法
這篇文章主要介紹了微信小程序頁面?zhèn)鞫鄠€參數(shù)跳轉(zhuǎn)頁面的實(shí)現(xiàn)方法,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-05-05javascript 獲取所有id中包含某關(guān)鍵字的控件的實(shí)現(xiàn)代碼
獲取某容器控件中id包含某字符串的控件id列表2010-11-11JS使用正則表達(dá)式實(shí)現(xiàn)關(guān)鍵字替換加粗功能示例
這篇文章主要介紹了JS使用正則表達(dá)式實(shí)現(xiàn)關(guān)鍵字替換加粗功能,涉及javascript基本正則匹配與替換操作相關(guān)技巧,需要的朋友可以參考下2016-08-08十個開發(fā)人員面臨的最常見的JavaScript問題總結(jié)
今天,JavaScript?是幾乎所有現(xiàn)代?Web?應(yīng)用的核心。這就是為什么JavaScript問題,以及找到導(dǎo)致這些問題的錯誤,是?Web?發(fā)者的首要任務(wù)。本文總結(jié)了十個常見的問題及解決方法,需要的可以參考一下2022-11-11