【info】いつもいろいろなテストなどをページ内のあちこちでやっているので、重かったり、壊れていたりするf^^;ことも多いです。実験用ですので、カオス(混沌)をあえて意図したりもしますので、標準やValidとは無縁だったりしますが、何卒、ご了承ください ( _ _ b
function (){
//ここにスクリプト
}
これは、オブジェクトのメソッドを作る時や、使い捨ての機能を引数で与える時などいろいろな使い方ができます。この匿名関数も、名前のある関数と同様に、関数内で宣言した変数や関数のスコープはローカルですので、そこで宣言した変数や関数はグローバル領域を汚染しません。
<script>
(function (){
var x = 2,
y = 1
function hogehoge (x,y){
return x+y
}
alert(hogehoge(x,y)) //3
})()
alert(hogehoge(3,4)) //hogehoge is not defined
</script>
このページのように、いろいろなスクリプトが混在しそうな(恐ろしい)場所では、こんな風に「(function (){」 と 「})()」で囲む、という作業だけなので、手軽にローカルスコープを実現する手段として優れているかな?と。
<script>
var myIns= new (function (){
var x = 2,
y = 1
this.hogehoge = function (x,y){
return x+y
}
alert(this.hogehoge(x,y)) //3
})()
alert(myIns.hogehoge(3,4)) //7
</script>
こんな定型化もありうり?
<script><!--
(function (){
//ここにスクリプト
})()
//--></script>
関数内部で変数文が発生するならば、その変数は、セクション 10.1.3 にあるように、その関数内の関数ローカルスコープで定義される。
(高橋注: ただし、varを使わずに発生した変数文はグローバル↓になってしまうので要注意)
function (){
var a=1, //ローカル
b=1 //ローカル(カンマでつないでいるので)
c=1 //グローバル(var を使っていないので)
function d(){ /* .... */ } //ローカル
var e=function (){ /* .... */ } //ローカル
f=function (){ /* .... */ } //グローバル
// (var を使っていないので)
}
var a=0;
new function (){
var a=1;
} ;
alert(a); // 0が表示されます
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |



