私はJavaScriptで試したと私はこのスニペットになってしまった:一般的なブラウザの実行待ち時間に関する "console.log"の最新の動作は何ですか?
var num = new Number(20);
function f(n) {
n["foo"] = "bar";
}
// the printed object has a "foo" property.
console.log(num, f(num));
私はf(num)
が私console.log
にnum
後に来るので、印刷されたオブジェクトがfoo
プロパティは、f(num)
コールでそれに追加しているだろうと思ったことはありません(私はChromeを使用しています)。
console.log
はすべての引数を実行して結果を出力していたので、console.log
のMDNのドキュメントに行きましたが、それについては何もありませんでした。
次に私はつまずいたthis StackOverflowの質問。
第二と第三の質問は、オブジェクトで使用した場合console.log
が少し遅れていることを言うが、(それはNumber
オブジェクトであるため)、その場合には、次のスニペットで印刷されたオブジェクトは、同様にfoo
性質を持っている必要があり、それはしていません:
var num = new Number(20);
function f(n) {
n["foo"] = "bar";
}
// no "foo" property
console.log(num);
f(num);
私は除いて、ほとんど言及した第二と第三の答えが言うことを言う質問への受け入れ答えは、それはまた、行動がコンソールまたはブラウザ依存であると述べています。だから、どういうブラウザがこのようなことを今日どのように扱っているのでしょうか(その質問は6年前のことです)?非常に大きなオブジェクトの場合のみは非同期ですか?最初の質問のnum
はなぜfoo
プロパティで印刷されるのですか?
どうやら 'はconsole.log()' "ソートの" Chromeで非同期です。他の日にも同様の問題が発生しました。https://stackoverflow.com/questions/47046935 –
その質問にも答えられていません。しかし、それが非同期なら、それはいつ非同期ですか?私が2番目の例で示したように、それは非同期ではありません(私がリンクしている質問に対する答えによる)。 – Taurus
@Taurus実際には非同期ではありませんが、オブジェクトの検査は非同期で行うことができます。詳細については、[here](https://stackoverflow.com/a/23392650/1048572)を参照してください。 – Bergi