鍍金池/ 問答/HTML/ 關(guān)于JS 新人自學(xué)有兩個(gè)小細(xì)節(jié)的問題

關(guān)于JS 新人自學(xué)有兩個(gè)小細(xì)節(jié)的問題

1.書本例題,對一個(gè)數(shù)組遍歷,輸出數(shù)組里的所有值。答案是這樣的:

if (image.length>0){
    for (var x=0; x<image.length; x++){
      //code
    }
}

而我沒有寫判斷語句直接做的循環(huán),因?yàn)槲蚁肴绻鹖mage長度是0自然會(huì)跳過循環(huán):

for (var x=0; x<image.length; x++){
  //code
}

輸出結(jié)果是一樣的。但是這樣做可以么?以后會(huì)不會(huì)造成什么錯(cuò)誤?

2.書本例題,對英文名字重新排版,名字首寫字母大寫,姓全部大寫。名字被split的成數(shù)組。
名字的處理上答案是這樣的:

name[0] = name[0],slice(0,1).toUpperCase()+name[0].slice(1).toLowerCase();

我寫的答案是這樣的:

name[0] = name[0][0].toUpperCase()+name[0].slice(1).toLowerCase();

兩個(gè)得到的結(jié)果是一樣的。但是這樣做可以么?以后會(huì)不會(huì)造成什么錯(cuò)誤?

謝謝您花費(fèi)時(shí)間回答我的問題。謝謝

回答
編輯回答
吢丕

if (image.length>0)是為了確認(rèn)image是可以遍歷的,例如下面這個(gè)就會(huì)報(bào)錯(cuò)了(好吧并不會(huì),應(yīng)該只是判斷如果沒有長度就不進(jìn)入循環(huán)了,你的寫法沒啥問題)

var image = {}
for (var x=0; x<image.length; x++){
    // code
}

第二個(gè)也是同樣的道理,如果name[0]是個(gè)空字符串,name[0].slice(0,1)返回的是空字符串"",可以繼續(xù)后面的操作,但是name[0][0]會(huì)返回undefined,執(zhí)行toUpperCase方法就會(huì)報(bào)錯(cuò)了。

順便有更方便的方法:

name.replace(/./, $ => $.toUpperCase());
2017年5月20日 03:00
編輯回答
過客

你的兩個(gè)代碼都可以,比書上寫的簡潔和直觀,沒有問題。
實(shí)現(xiàn)相同的功能,代碼可以有多種寫法,很正常的。就像做數(shù)學(xué)題,同樣解出答案,可能計(jì)算方法和計(jì)算過程不一樣。
至于,你擔(dān)心程序會(huì)不會(huì)出錯(cuò),可以學(xué)一學(xué)單元測試的知識,對自己寫的程序做自動(dòng)化單元測試,就可以保證代碼質(zhì)量了。

2017年3月2日 14:09
編輯回答
尛曖昧

關(guān)于第一個(gè)問題,其實(shí)我覺得最嚴(yán)謹(jǐn)?shù)膶懛☉?yīng)該是:
`

if (image && Array.isArray(image) && image.length) {
    //for loop
}

`

2018年3月26日 02:04
編輯回答
下墜

性能方面忽略,兩個(gè)答案實(shí)際差不多,實(shí)際業(yè)務(wù)需要考慮健壯性,你不能確保image一定是數(shù)組,所以可能會(huì)報(bào)錯(cuò),或者考慮不是數(shù)組的情況應(yīng)該如何去處理。

2017年7月12日 20:56
編輯回答
貓館

第一個(gè) 你寫的只是多出來一個(gè)x=0的變量
第二個(gè) 如果是空字符串會(huì)報(bào)錯(cuò),通過下標(biāo)獲取的方法在低版本ie不兼容也會(huì)報(bào)錯(cuò)

2018年4月29日 07:35
編輯回答
冷溫柔

第一題
if判斷類型是否有l(wèi)ength屬性 并且不為空! 然后再?zèng)Q定是否去循環(huán)數(shù)組 避免不必要的代碼執(zhí)行
而你寫法也可以 只不過少了一層判斷 它直接去循環(huán) 如果有值就循環(huán) 無值就跳出 而且多了var x變量緩存 意義不同

第二題
你是通過字符串的索引去改變首字母的大寫 寫法沒問題
例題是通過slice截取字符去操作首字母大寫 結(jié)果相同 方法不同 沒什么問題

不會(huì)造成錯(cuò)誤

2017年6月18日 22:07