JS 変数とそのスコープの知識ポイントの概要

巴扎黑
リリース: 2017-08-17 14:00:21
オリジナル
1509 人が閲覧しました
1. 変数とそのスコープ: 変数は「グローバル変数」と「ローカル変数」に分けられます。「グローバル変数」は関数の外で宣言され、すべての関数で使用できます。一方、「ローカル変数」は関数本体内で宣言され、すべての関数で使用できます。変数が定義されている関数本体内でのみ使用できます。
(注: 変数の宣言時に var キーワードはありませんが、直接代入された変数はグローバル変数です)
<script type="text/javascript">
  function main() {  
    n = 10;//这里的n为全局变量,可以被外部直接使用
  }
  main();
  alert(n);
</script>
ログイン後にコピー

2. 関数本体では、ローカル変数がグローバル変数よりも優先されます。
<script type="text/javascript">
  //网上看到的我认为很有代表性的一个例子,在函数体外部和内部都申明了相同名字的变量,变量的作用域问题,例子如下:
  var n = 1;
  function test() {
    alert(n); //这里的a并不是全局变量,原因是函数体第四行申明了一个相同重名的局部变
         //量a,如果把第四行a的申明注释掉,那么这里的a显示1,为全局变量。所以得
         //出结论:全局变量a被局部变量a覆盖了。
         //说明了JS函数在test()在执行前,函数体内的变量a都指向了局部变量,但本
         //行输出的a在执行过程中还没有被赋值,所以显示undefined。
    n = 2;
    alert(n);
    var n; //本行申明局部变量a
    alert(n);
  }
    test();
    alert(n);
</script>
ログイン後にコピー

私の理解によれば、上記の例の最終的な出力の答えは次のようになります: 1 2 2 1; しかし、正しい答えは次のとおりです。関数本体内では、ローカル変数がグローバル変数をオーバーライドします。
3. 関数本体内のローカル変数を外部から読み取るにはどうすればよいですか?
一般的に関数本体内から直接取得できるのは外部グローバル変数のみですが、関数本体内のローカル変数は外部から取得できません。ただし、これは、関数本体内でローカル変数を返す別の関数を定義し、その関数を外部から呼び出すことで実現できます。
りー

以上がJS 変数とそのスコープの知識ポイントの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート