javascript を使用して開発しているときに異常な動作に気付きました。誰か説明してもらえますか?
私はこれにjavascriptコードを持っています:
function MyFunction(){
var categoryId = 'abc';
var that = this;
$(_elem).parent().find('[data-id]').each(function(){
that.categoryId += $(this).data('id') + ',';
});
setEventsCategoryEx(categoryId, url, parentUrl);
}
これは間違っているはずです。categoryId はグローバルではないため、"that.categoryId" を使用してアクセスできないはずです。
問題は次のとおりです。実行が最初に each メソッドに入ったときに、その .categoryId を出力すると "abc" (ローカルの categoryId 変数に割り当てた値) が生成されます。
マウスが各関数を離れると、 that.categoryId と categoryId は異なる値になります: categoryId = "abc" that.categoryId = "abc+"
次の点がわかりません: これらは別々の変数でなければならないのに、なぜ同じ値で始まるのですか?
ありがとう、オスカー
編集: 申し訳ありませんが、コピーして貼り付けるときに、関数宣言を追加するのを忘れていました。「onclick」イベントによって呼び出される関数内にあります。