カプセル化のために匿名の即時呼び出し関数を使用するコードが次のように見えるのを見てきました
(function(){
var ABC = ...
function XYZ(){
....
}
})();
ABC や XYZ() は (スクリプト インジェクション/ハイジャックによって) 完全にアクセスできませんか?
カプセル化のために匿名の即時呼び出し関数を使用するコードが次のように見えるのを見てきました
(function(){
var ABC = ...
function XYZ(){
....
}
})();
ABC や XYZ() は (スクリプト インジェクション/ハイジャックによって) 完全にアクセスできませんか?
オブジェクト O は、スコープにいずれかを参照する変数が 0 になると、スコープ内で「完全にアクセスできなくなります」
この場合、上記のいずれも使用できませんABC
。IIFE の範囲外のコンテンツへの参照がなく、プロパティであるオブジェクトへの参照もありません。これは、現在アクセスできないことを意味します。ただし、 で閉じてreturn を返すABC
と、次の方法でアクセスできるようになりました。XYZ
XYZ
ABC
XYZ
var outerXYZ = (function(){
var ABC = "foo";
function XYZ(){
return ABC;
}
return XYZ;
})();
// no way to access ABC directly, but
var outerABC = outerXYZ();
スクリプト インジェクション/ハイジャックの部分はあいまいすぎて意味のある回答ができません。
あなたが提供したサンプルでは、変数と関数は、自己呼び出し関数のスコープ外では完全にアクセスできません