學習zepto源碼時,發現一個很佩服的寫法。
關鍵點在三元選擇符。
首先,假定settings是有傳入參數的,此時settings會進行隱式強制類型轉換為布爾值,如果為真,元素顯示,如果為假,元素隱藏。無可厚非,最具有技術性的(我自己認為的),是在未傳入settings參數的時候。
解析一下這段,如果settings!==undefined 取傳入的settings參數,即進行到上面提到的settings有參數的步驟。
如果沒傳參數,即settings === undefined ,此時,會直接取當前元素的display的值,判斷是否為‘none’,如果為none,條件結果為真,如果不是‘none’,條件結果為假。然后進行后面的顯示隱藏。
相當於一條js代碼進行了
1、判斷是否傳遞參數,
2、傳遞參數, 取值settings,判斷settings,強制轉換布爾值,
3、未傳遞參數,取當前元素的display的值,是否為none,也轉換為布爾值。