1. 程式人生 > >簡化一段javascript代碼

簡化一段javascript代碼

公眾號 image 賦值 strip 運算符 ges -i 最終 scrip

在實際的項目中,我們經常會有如下的需求:
從一個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]  ||  ""

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

歡迎關註公眾號:
技術分享圖片

簡化一段javascript代碼