- 正直どう書くと見やすいか分からないです。ひとまずぱらっと書いてます。
- 多分言語規定はそれはそれとしてサンプルコードがあるほうが手っ取り早いのではないかと。
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
最終更新:2013年12月03日 16:38