JavaScript作用域
函數内外定義預設都是全局變量
name = "Tom" ;
function func() {
age = "23" ; // 預設是全局變量
let sex = "man" ; // 定義局部變量
console.log(name) ; // Tom
}
func();
console.log(age) ; // 23
console.log(sex) ; // ReferenceError: sex is not defined
PHP作用域
函數内外定義預設都是局部變量
<?php
$name = "Tom" ;
function func() {
$age = "23" ; // 預設是局部變量
$GLOBALS['sex'] = "man" ; // 定義全局變量
var_dump($name) ; // NULL 預設不能通路全局變量
global $name ; // 聲明name為全局變量
var_dump($name) ; // string(3) "Tom"
}
func();
var_dump($age) ; // NULL
var_dump($sex) ; // string(3) "man"
Python作用域
函數外是全局變量
函數内是局部變量
函數内可以通路函數外,函數外不能通路函數内
name = "Tom"
def func() :
age = "23" # 預設局部變量
global sex # 定義全局變量
sex = "man"
print(name) # Tom
func()
# print(age) ; # NameError: name 'age' is not defined
print(sex) # man
Java作用域
括号外是全局變量
括号内是局部變量
括号内可以通路括号外,括号外不能通路括号内
class Demo{
public static void main(String[] args) {
String name = "Tom" ;
{
int age = 23 ; // 預設是局部變量
System.out.println(name) ; // Tom
}
// System.out.println(age) ; // 錯誤: 找不到符号
}
}
總結
語言 | 預設作用域 | 通路情況 |
JavaScript | 全局變量 | 任何地方 |
PHP | 局部變量 | 内外不互通 |
Python | 内可以通路外,外不能通路内 | |
Java |