スコープ

  • 正直どう書くと見やすいか分からないです。ひとまずぱらっと書いてます。
  • 多分言語規定はそれはそれとしてサンプルコードがあるほうが手っ取り早いのではないかと。

Java

  • { }の中に書いてあるものはそれよりも下位のレベルの {} の中からなら参照可能。
    • 無名クラスの場合はその限りではないが、生成元メソッドのローカル変数定義に final つければ参照可能。
  • どのクラスにも属さないグローバル変数は書けない。

PHP

  • スコープを外れている例として、以下の場合function test関数内部のaは表示されない。
<?php
$a = 1; /* グローバルスコープ */ 
function test()
{ 
    echo $a; /* ローカルスコープ変数の参照 */ 
} 
test(); /* 何も返さない */
?>
  • グローバル宣言を関数の内部で行い、値を参照することが出来る
<?php
$a = 1;
$b = 2;
function Sum() 
{
    global $a, $b;
    $b = $a + $b;
 } 
Sum();
echo $b; /* 3が返る */
?>
  • 全てのスコープで使用可能なスーパーグローバル変数というものがある。(PHP4.1.0より使用可能)
<?php
function test() {
    $foo = "local variable"; 
    echo '$foo in global scope: ' . $GLOBALS["foo"] . "\n";
    echo '$foo in current scope: ' . $foo . "\n";
}
$foo = "Example content";
test();
?> 
スーパーグローバル変数と同じ使い方ができるものにスコープ定義演算子(::)というものもある。
<?php
class MyClass {
    const CONST_VALUE = 'A constant value';
}
class OtherClass extends MyClass
{
	public static $my_static = 'static var';	
	public static function doubleColon(){
		echo parent::CONST_VALUE . "\n"; //5.3.0対応
		echo self::$my_static . "\n";
	}
}
$classname = 'OtherClass';
echo $classname::doubleColon(); //5.3.0で対応
echo OtherClass::doubleColon(); //出力:A constant valuestatic var
?>

javascript

javaとはかなり違った。
基本的に変数がvarで表されるためにローカル、グローバルが配置されてから決まる。
var num = 1;
function localFunc() {
  var num = 0;
  return num;
}
window.alert(localFunc()); // 0
window.alert(num);         // 1

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2013年12月03日 16:38