原貼JavaScript,為什么此處沒有異步也需要用閉包今天閑來無事重寫了這個方法.大概意思就是根據屬性名判斷是否是post開頭,如果是的話將這個屬性對應的方法進行改寫,先進行一個隨機數判斷再決定是否執行原方法。正確的寫法是用匿名函數或者let之前的帖子中如果我舍棄用匿名函數的話(也就是錯誤寫法),只有post3這個屬性會被改寫,因為i和func的指向都是最后一次for中i的值,所以被覆蓋了。但是這一次我的代碼中3個方法都被改寫成了post3的方法,obj[i]并沒有被覆蓋。讓我覺得非常疑惑。為什么兩次相同的代碼結果會不一樣。varobj={post1:function(){console.log('post1')},post2:function(){console.log('post2')},post3:function(){console.log('post3')},check:function(){returnMath.random()>0.5}}functionchangeFunc(obj){for(variinobj){if(i.indexOf('post')==0&&typeofobj[i]=='function'){varfunc=obj[i]obj[i]=function(){if(obj.check()){func.apply(this,arguments)}}}}}changeFunc(obj)obj.post1()obj.post2()obj.post3()結果是隨機輸出0-3個'post3',這是為啥呢==
跪求!關于JavaScript中for語句的引用問題
慕容708150
2019-10-25 20:56:59