最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

突然覺得自己好像沒學(xué)過JS

2020-09-02 16:42 作者:博毅創(chuàng)為  | 我要投稿

前言

一、先看題:mean的值是什么?

var scores = [10,11,12];var total = 0;for(var score in scores){ ?total += score; }var mean = total/scores.length;console.log(mean);

二、是11?

恭喜你:答錯了!

三、是1?

恭喜你:答錯了!

四、正確答案: 4

解釋: for in 循環(huán)循環(huán)的值永遠是key, key是一個字符串。所以total的值是:'0012'。它是一個字符串,字符串'0012'/3,0012會被轉(zhuǎn)換成12,然后除以3,結(jié)果是4。

五、后記

這個示例是來自《編寫高質(zhì)量JavaScript的68個方法》的第49條:數(shù)組迭代要優(yōu)先使用for循環(huán)而不是for in循環(huán)。
既然已經(jīng)發(fā)布,就可能有好事者拿出去當面試題。這個題目很有可能坑一堆人。其中包括我。
這里涉及到許多js的基礎(chǔ)知識:

for in 循環(huán)是循環(huán)對象的索引屬性,key是一個字符串。
數(shù)值類型和字符串相加,會自動轉(zhuǎn)換為字符串。
字符串除以數(shù)值類型,會先把字符串轉(zhuǎn)為數(shù)值,最終結(jié)果為數(shù)值。

六、正確操作

var scores = [10,11,12];var total = 0;for(var i=0, n=scores.length; i < n; i++){ ?total += scores[i]; }var mean = total/scores.length;console.log(mean);

這樣寫有幾個好處:

循環(huán)的終止條件簡單且明確。
即使在循環(huán)體內(nèi)修改了數(shù)組,也能有效的終止循環(huán)。否則就可能變成死循環(huán)。
編譯器很難保證重啟計算scores.length是安全的。
提前確定了循環(huán)終止條件,避免多次計算數(shù)組長度。這個可能會被一些瀏覽器優(yōu)化。

關(guān)鍵詞:JavaScript,面試題,for循環(huán)與for in循環(huán)的區(qū)別,JS數(shù)組,遍歷數(shù)組注意事項


突然覺得自己好像沒學(xué)過JS的評論 (共 條)

分享到微博請遵守國家法律
麻江县| 南开区| 海宁市| 延津县| 漳平市| 电白县| 博罗县| 泸定县| 佛山市| 八宿县| 白沙| 兴海县| 西青区| 额尔古纳市| 冕宁县| 梅州市| 临沂市| 互助| 邛崃市| 娱乐| 临安市| 防城港市| 友谊县| 上林县| 通州市| 浦县| 廊坊市| 泰安市| 乐业县| 舟曲县| 湟源县| 台湾省| 壶关县| 怀仁县| 富平县| 宜川县| 冕宁县| 祥云县| 中西区| 渝中区| 湘潭市|