天天看點

JavaScript、PHP、Python、Java作用域

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