關於使用 進行判斷的一些思考

2022-08-02 05:21:13 字數 1459 閱讀 2906

接觸專案**的時候經常可以看到例如這樣的**:

this

.props.planelist &&

this

.props.planelist.differentialconfig &&

this

.props.planelist.differentialconfig.lowpricerule &&

this

.props.planelist.differentialconfig.lowpricerule.reasonlib.

map(i => i.id)

;

這是確保在資料可能出現字段丟失時常用的**邏輯,剛開始很困惑,為什麼不直接判斷最後乙個而要寫這麼長把每一步都判斷呢?

this

.props.planelist.differentialconfig.lowpricerule.reasonlib &&

this

.props.planelist.differentialconfig.lowpricerule.reasonlib.

map(i => i.id)

;

經過自己寫的幾個deme,發現這樣寫的好處就是可以避免報錯影響後面**執行。這裡貼上我的例子:

//獲得的資料

var data =

}//資料正常情況

data && data.a && data.a.b && console.

log(

'bingo');

//bingo

//資料出錯情況,欄位中不存在data.a.c

//直接判斷最後一步,當找不到時會**直接報錯

data.a.c && console.

log(

'bingo');

//error!報錯

console.

log(

'next');

//不輸出

//逐步判斷,當找不到時不會報錯只是不往後執行

data && data.a && data.a.c && console.

log(

'bingo');

//undefined

console.

log(

'next');

//next

其實很好解釋,js中&&是從前往後判斷,當前乙個值為true時繼續往後執行,並返回第乙個為false之前的那個值,但如果訪問值的時候報錯就會直接中斷執行,丟擲錯誤。這裡推薦用|| ''來做乙個錯誤避免的方式

data && data.a && data.a.c && console.

log(

'binggo')||

''

關於使用DFS,BFS的一些思考總結

總的來說,dfs和bfs是一種遍歷策略,整體執行的框架是固定的,但是具體處理以及函式的形參是需要根據具體問題具體來定的。也就是說,在bfs或者dfs的時候,首先需要搞明白的是 遍歷的目的是什麼。計算引數是比較常見的題目,只標記結點是否訪問在計算連通塊個數時總結過。詳細說一下計算引數問題。可以在形參中...

關於SpringIOC的一些思考

ioc是 依賴倒置原則 的乙個特例,說其是特例,就是說其具有 依賴倒置原則 的性質。依賴倒置原則強調的兩點是 上層模組和下次模組都依賴於抽象,二者之間通過這種抽象的東西聯絡在一起 具體可以依賴於抽象,而抽象不能依賴於具體。我認為spring提倡的 基於介面程式設計 就是為了遵循 依賴倒置原則 其中所...

關於sizeof 的一些思考

今天面試被問到sizeof,回來整理一下。1 定義 sizeof是c c 中的乙個操作符 operator 作用就是返回乙個物件或者型別所佔的記憶體位元組數。msdn上的解釋為 the sizeof keyword gives the amount of storage,in bytes,assoc...