摘要:分支分支以上代碼產(chǎn)生了一個表面上看起來會很詭異的問題,就是如果的分支情況下,有時候會導(dǎo)致外層的循環(huán)回頭,即明明最外層已經(jīng)循環(huán)到的最后一個了,跑完分支之后,外層循環(huán)又回頭執(zhí)行。
for (var i = 0; child && i < child.length; i++) { var obj = child[i]; var kind = child[i].kind; var deiveId = child[i].id; if (kind == "4") {//分支1 // do sometjing }else{//分支2 for(i in arr){ //do something } }
以上代碼產(chǎn)生了一個表面上看起來會很詭異的問題,就是如果kind!=4的分支2情況下,有時候會導(dǎo)致外層的for循環(huán)回頭,即:明明最外層已經(jīng)循環(huán)到child的最后一個了,跑完分支2之后,外層for循環(huán)又回頭執(zhí)行。
原因分析:
我想專業(yè)人士不像我這么渣的話會發(fā)現(xiàn)問題在變量i,此處i并不會成為塊級變量,而是函數(shù)級,分支2中的i變化會導(dǎo)致外層i變化,從而導(dǎo)致循環(huán)回頭。
js在ES6之前沒有塊級作用域,只分為全局作用域和函數(shù)級作用域,此處i為函數(shù)級作用域,而我們用它做循環(huán)索引的時候其實是想當(dāng)作塊級作用域使用。
解決辦法
想要達(dá)到塊級作用域效果可以使用ES6語法的let關(guān)鍵字實現(xiàn):
for(let i=0;i或者只針對解決上述問題,不必糾結(jié)作用域問題的話,我用了更low一些但可以解決問題的,那就是分支2就不用i,換成j一樣可行。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/95199.html
摘要:為此決定自研一個富文本編輯器。例如當(dāng)要轉(zhuǎn)化的對象有環(huán)存在時子節(jié)點屬性賦值了父節(jié)點的引用,為了關(guān)于函數(shù)式編程的思考作者李英杰,美團(tuán)金融前端團(tuán)隊成員。只有正確使用作用域,才能使用優(yōu)秀的設(shè)計模式,幫助你規(guī)避副作用。 JavaScript 專題之惰性函數(shù) JavaScript 專題系列第十五篇,講解惰性函數(shù) 需求 我們現(xiàn)在需要寫一個 foo 函數(shù),這個函數(shù)返回首次調(diào)用時的 Date 對象,注意...
摘要:去掉無用的代碼使用主動語態(tài)避免一連串松散結(jié)構(gòu)的代碼邏輯把相關(guān)的變量函數(shù)放在一起。該處代碼運行正常,但可能由于時間趕或者其他原因,需要修正。此時需要對思路或詭異手段進(jìn)行描述。 命名規(guī)范 變量名, 函數(shù)名 小駝峰【命名法 camel Case】: numberOfPeople 第一個單詞的首字母小寫;第二個單詞開始每個單詞的的首字母大寫 組件名 大駝峰【命名法 Camel Case】: ...
摘要:然而實際上,這個結(jié)果反而是正確的。結(jié)論我認(rèn)為出現(xiàn)這種詭異的結(jié)果應(yīng)該算是的,同時,這也說明了此種問題不太容易被發(fā)現(xiàn)和暴露,這要求我們平常寫代碼的時候盡量使用常用的語法,和精干的語句,讓代碼和邏輯達(dá)到最佳的平衡點。 前言 之前我在面試的時候,遇到許多年輕人都聲稱自己精通php,有過許多項目經(jīng)驗等等。然而,當(dāng)真正筆試的時候,我問到 $result=1; if(-1){ $result=2;...
摘要:觸發(fā)事件可以攜帶數(shù)據(jù),這些數(shù)據(jù)被用于傳遞給綁定了事件的其它組件的回調(diào)函數(shù)上,進(jìn)而被傳遞給其它組件。父組件可以在回調(diào)函數(shù)里做任何事情,頗有靈活性。一般情況下,父組件會在回調(diào)函數(shù)中更新自己的狀態(tài)數(shù)據(jù)。 上一篇博文梳理了vue的數(shù)據(jù)驅(qū)動和響應(yīng)式相關(guān)的特性,這一篇博文就來梳理vue的一個很重要的特性,組件化。自定義組件之于vue,其意義不亞于函數(shù)之于C,java之類的編程語言。函數(shù)是計算機科學(xué)...
摘要:總結(jié)總而言之,作用域在語法分析時就已經(jīng)處理完啦,的作用域是靜態(tài)作用域,在運行時只是上下文對象在一直發(fā)生變化。 JavaScript 的作用域和上下文對象this 從幾個有意思的js問題開始 為什么輸出的不是f2? `var scope = top; var f1 = function() { console.log(scope); }; f1(); //...
閱讀 1985·2021-11-23 10:03
閱讀 4186·2021-11-22 09:34
閱讀 2492·2021-10-08 10:05
閱讀 2257·2019-08-30 15:53
閱讀 1695·2019-08-30 13:56
閱讀 1164·2019-08-29 16:52
閱讀 1114·2019-08-26 13:31
閱讀 3354·2019-08-26 11:45