4

私はコーディ・リンドリーのこの本「JavascriptEnlightenment」を読んでいます。82ページで、彼は次のように述べています。「明示的であること(たとえば、window.alert()とalert())は、パフォーマンスに関して少しコストがかかります。スコープチェーンのみに依存し、必要なプロパティがグローバルスコープに含まれていることがわかります。」

これがなぜなのか、ちょっと気になります。Javascriptインタープリターはスコープのチェックをスキップして直接見つけることができるので、逆になると思います。何かの正確なアドレスを指定しないことがどのように有益であるかがわかりません。

つまり、グローバルスコープに含まれるものを使用するたびにwindow.whatever()と入力する必要はないことを知っているので、指定しない方が速いのは素晴らしいことだと思います。理由はわかりません。

それらの「知りたい」ことの1つにすぎません。

4

1 に答える 1

6

インタプリタは常にスコープチェーンを使用する必要があります。あなたが書くとき、window.alert()それはスコープチェーンを上って値を見つけるwindow必要があります-あなたは頭の中のものを隠すという名前のローカル変数を持っているかもしれませんwindow、それでこれがグローバルオブジェクトであると仮定することはできません。

JavaScriptにトップレベルのコンテキストを明示的に示す構文がある場合、それはより高速になります。しかし、そうではありません。

于 2012-10-23T02:27:39.163 に答える