コードコピーは次のとおりです。
<!doctype html>
<html>
<head>
<メタcharset = "utf-8">
<Title>タイトルを挿入して</title>
<script type = "text/javascript">
/*
* 1。JSのすべての変数が一般的です。
2.JSには静的変数がありません
3。閉鎖:関数の外側の変数は、関数内で呼び出すことができます。そうでなければ、それはできません
*/
var r = 10;
関数test1(){
var r2 = "abc";
//アラート(r)
}
// alert(r2); // R2アクセスできない関数内
test1();
//ネストされた関数は大丈夫です
関数test2(num1){
関数test3(num2、num3){
num2+num3+num1を返します。
}
return test3(10,20)
}
// alert(test2(30));
// ------------------------------------------------------------------------------------------------------------------------------------------------------------------ -
function testfun(){
var r = 1;
var arr = [];
for(var x = 0; x <3; x ++){
R ++;
arr [x] = function(){
rを返します。
}
}
arrを返します。
}
alert( "testfun:"+testfun());
var arr2 = testfun();
alert( "arr:"+arr2 [0]);
alert( "arr:"+arr2 [1]());
alert( "arr:"+arr2 [2]());
// ==========上記の3つのポップアップボックスはすべて4 ================================
/*理由を分析します:
JavaScriptにどのような機能があるかを理解してください。
関数はコードの実行可能ブロックであり、関数は、関数を定義する2番目の方法など、変数で表現することもできます。
var add = new function( "a"、 "return a+10");基礎となる本質は、関数名ポインターです
変数用に作成されたこの実行可能コード。
*最初に、TestFun関数が実行された後、同じものがarr [0]、arr [1]、およびarr []に保存されます。
実行可能コードブロックfunction(){
rを返します
}つまり、上記の3つは単なる関数変数です。それらを実行するには、変数名の後に()を追加するだけで問題なくなります。
そしてこの時点でrの値は4です
arr [0]()を実行する場合、このコードブロックでコードを実行することに相当します。
したがって、最終結果はRを返します。もちろん、4は4を返します。
*/
</script>
</head>
<body>
</body>
</html>