jqueryを使用したjavascriptのアクセシビリティとコード編成の問題
-
22-07-2019 - |
質問
プログラム内のコードの順序に問題があります。現在、 document.ready(function(){});
にはいくつかのことがあり、その外側にはいくつかのものがあります。 (コードを整理または改善するために)何かを移動するたびに、何かを壊すことになります。宣言の順序またはアクセスレベル(つまり、 document.ready(function {});
はその中の何かにアクセスできません。
誰もがJavaScriptが賢明な場所にあるべきかについての洞察を持っていますか?
すべてが document.ready(function(){});
内にあるべきですか?
document.ready(function(){}の外に何かを置く理由はありますか? );
?
document.ready(function(){});
内のコードは、外部コードからアクセスできませんか?
解決
1。すべてが内にあるべきか document.ready(function(){});?
いいえ、document.ready関数は、初期化、イベントハンドラーの割り当てなどにのみ使用する必要があると思います。
2。持っている理由はありますか 以外のもの document.ready(function(){});?
コードの再利用、およびより良いコード編成。
3。コードは document.ready(function(){}); 外部コードからアクセスできませんか?
はい、document.readyで作成された変数とオブジェクトは外部スコープからアクセスできません。
他のヒント
すべてがdocument.ready(function(){});内にあるべきですか?
はい、いいえ。大規模なJavaScriptアプリケーションでは、このイベントハンドラーからメインコントローラーをグローバルスコープに初期化します。ただし、DOMの準備が整うまで待つ必要のないコード、特に DOMに依存しないコードがあります。それはかなり簡単だと思います。たとえば、このイベントハンドラーの外部で構成オブジェクトクラス、関数などを宣言します。
document.ready(function(){});の外側に何かを置く理由はありますか?
確かに、上記の理由で触れました。主に、DOMの相互作用を必要としないコードは、特にDOMの読み込みと非同期に実行できる場合(たとえば、関数定義、構成オブジェクトなど)、DOMの読み込みを待つべきではありません。
また、すべてのコードを1つのイベントハンドラーに含めないことで、より整理された状態を保ち、コードのモジュール化、適切なデザインパターンの使用などが可能になります。
document.ready(function(){});内のコードです外部コードからアクセスできませんか?
もう一度、はい、いいえ。 var
でローカルとして宣言した場合はyesになります。イベントハンドラに対してローカルであるため、外側のスコープからアクセスできません。それ以外の場合は、グローバルスコープ内にあり、外部スコープからアクセスできます。次に例を示します(ここでホスト: http://jsbin.com/uriqe )
JavaScript
var foo = function() {
alert(global);
return false;
}
$(document).ready(function() {
global = "you can see me!?";
alert("global is initiated");
});
HTML
<body>
<p><a href="#" onclick="foo()">click me</a></p>
</body>
$(document).ready()
の控えめなメソッドイベント添付ではなく、 onclick
は、 foo
クロージャープロパティを介して global
にアクセスできます。
編集:前の文で明確にしたと思いましたが、 onclick
は意図的にグローバルスコープとクロージャープロパティの混乱を避けるために使用されますが、 onlick
の使用を推奨していません。もちろん悪い習慣であり、使用すべきではありません。