鍍金池/ 問答/C++  HTML/ 請教這段js代碼中最后為什么還要寫一個return true?

請教這段js代碼中最后為什么還要寫一個return true?

String.prototype.endWith = function(str){  
     if(str==null || str=="" || this.length == 0 ||str.length > this.length){      
       return false;  
     }  
     if(this.substring(this.length - str.length)){  
         return true;  
     }else{  
         return false;  
     }  
     return true; //這句代碼的作用和意義是什么? 私以為以上兩個條件語句已經(jīng)包含所有情況-_-||
};  

如題

回答
編輯回答
放開她

不要怕,webstorm會告訴你unreachable code

webstorm還會幫你把代碼優(yōu)化成這樣

String.prototype.endWith = function (str) {
  if (str == null || str === "" || this.length === 0 || str.length > this.length) {
    return false;
  }
  return !!this.substring(this.length - str.length);
}; 
2017年8月19日 13:07
編輯回答
遺莣

你應(yīng)該自信點,確實沒意義

2017年6月11日 12:59
編輯回答
晚風(fēng)眠

可能是作者的習(xí)慣,不寫不舒服斯基

2018年3月24日 10:13
編輯回答
護(hù)她命

就是沒什么用

2018年2月14日 06:10
編輯回答
冷咖啡

是有那么點點多余的感覺!!可能是作者的習(xí)慣...

2018年9月22日 15:31
編輯回答
毀憶

最后一行加個return true就是讓看代碼的人一看出這個方法帶返回值,在代碼設(shè)計最初應(yīng)該是

String.prototype.endWith = function(str){  
     return true;
}; 

然后再在內(nèi)部做具體的邏輯判斷

既然@代碼宇宙 非常嚴(yán)肅的批評了我的回答,怕我會誤導(dǎo)人民群眾,建議我修改答案。好吧,我就強(qiáng)調(diào)一下,我沒有說這樣寫是正確的,這只是代碼設(shè)計之初的歷史遺留,在開發(fā)測試時,告訴后面的人這里需要返回布爾值,而添加的邏輯代碼似的return true變成了無效代碼,但是沒有被刪除而已,但在JS里并不影響運行。沒人會在 else return 后面故意再寫個return吧,如果有人被誤導(dǎo)了,建議重學(xué) if-else。

2018年1月21日 01:36
編輯回答
懶豬

沒意義,根本進(jìn)不來

2017年10月21日 13:03
編輯回答
不討囍

確實走不到,可能看著更好看吧

2018年8月20日 05:23
編輯回答
澐染
String.prototype.endWith = function(str){  
     if(str==null || str=="" || this.length == 0 ||str.length > this.length){      
       return false;  
     }  
     if(!this.substring(this.length - str.length)){  
       return false;  
     }
      
     return true; 
};  

這樣就看起來舒服多了

2018年5月14日 00:28