3

申し訳ありませんが、これは簡単なことかもしれませんが、私は困惑しています。この配列をループして各値をログアウトしようとしていますが、スクリプトは文字列オブジェクトをログアウトしています。

propertiesToSanitize = ["title", "description", "place_name"]
$.each propertiesToSanitize, ->
  console.log this

これはjQueryに変換されます

var propertiesToSanitize;
propertiesToSanitize = ["title", "description", "place_name"];
$.each(propertiesToSanitize, function() {
  return console.log(this);
});

戻ってきました:

String
  0: "t"
  1: "i"
  2: "t"
  3: "l"
  4: "e"
  length: 5

「タイトル」やその他の値ではなく、これを返す理由はありますか?助けてくれてありがとう。

4

2 に答える 2

8

各反復のインデックスと値は、コールバックのパラメーターとして提供されます。

$.each(propertiesToSanitize, function(index,value) {
    console.log(index + ':' + value);
});
于 2012-04-29T01:56:09.783 に答える
2

その理由はthis、JavaScriptでは非常に複雑だからです。コールバック内のthis変数は、多くの場合、信頼してはならないスコープスタックの奥深くにあるものを参照します。jQueryのeach場合、「Javascriptは、単純な文字列または数値であっても、常にthis値をラップします」と表示さObjectれています。

jQueryeachは、値を2番目の引数としてコールバックに渡します。JavaScriptでは、おそらくこれが必要になります。

$.each(propertiesToSanitize, function(idx, val) {
  return console.log(idx + ":" + val);
});

ただし、CoffeeScriptは、jQueryの助けを借りずに配列をループすることが非常に可能であることに注意してください。

for propName in propertiesToSanitize
  console.log propName
于 2012-04-29T02:08:33.203 に答える