簡化一段javascript代碼

在實際的項目中,我們經常會有如下的需求:
從一個map中獲取某key的值,如果發現對應的key的值爲null,則爲該key創建一個值(一般爲初始值),然後把這個值存回到map中,代碼如下:

var value = map[key];
if(value == null){
        value = "";
        map[key] = value;
}

但是總感覺這段代碼很噁心,爲啥,太囉嗦,太長。 實際項目中,這種操作會技巧多,如果到處都是這種操作的話,就很讓人崩潰。壞蛋必須死。
##賦值操作合併
首先,value = "" 和 map[key] = value這兩行沒必要寫成兩行,都是賦值,應此可以這樣優化:

var value = map[key];
if(value == null){
        value = map[key]  = "";
}

去掉if判斷

如果把if判斷,改成三元運算符,可以減少代碼,如下:

var value = map[key];
 value   = (value == null) ?( map[key]  = "") : value;

如果用 || 符號,看起來更加方便:

var value = map[key];
 value   = value || (map[key] = "");

當然,這兩行代碼,最終可以合併成如下代碼:

  var value = map[key]  || (map[key] = "");

至此完成,最終5行代碼簡化成一行代碼。
##另外一個答案
拿這個問題問公司的小夥伴,下面是另外一種答案:

var value = map[key] = map[key]  ||  ""

##總結
這個問題並不難,拿這個問題問小夥伴,一些人也可以給出正確答案。但平時沒有誰這樣去主動思考。

歡迎關注公衆號:
ITman彪叔公衆號

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章