for (var key in arr) {
if (arr.hasOwnProperty(key)) {
console.log('这一次可以输出key'+key)
this.$http.post('/getPaperListByCIdAndTId', {
teacherId: window._const.teacherId,
}).then((res_in) => {
console.log('这一次不能输出key'+key)
})
}
}
La deuxième sortie est $remove
Ou dites-moi comment obtenir la clé. Ensuite
Mot clé : fermeture
Il sera plus élégant d'utiliser array.map pour le résoudre
C'est fermé. Remplacez simplement var par let in es6
Ce problème est un problème typique de portée de variable de boucle.
then()
中的回调被调用的时候key
可能已经循环到最后一个了(也可能是间的某个值),所以里面使用的key
值是当时的key
值。这在 ES6 中要可以用let
代替var
pour le résoudre (car je vois que vous avez déjà utilisé les fonctions fléchées de ES6, alors utilisez ES6 en premier)Si vous souhaitez écrire ES5, vous pouvez utiliser un IIFE pour sceller la valeur de clé localisée (transmise via les paramètres, afin qu'elle ne change pas)
Méthode d'écriture fonctionnelle recommandée, ça a l'air plus simple, ES6 peut le faire comme ça
ES2017 peut aussi utiliser async, la syntaxe est plus concise
Je viens de le tester, ça marche, et vous devez utiliser let au lieu de var, sinon la sortie sera la dernière clé