首頁  >  文章  >  後端開發  >  “:=”中的全域變數賦值行為

“:=”中的全域變數賦值行為

PHPz
PHPz轉載
2024-02-09 14:50:25700瀏覽

“:=”中的全域變數賦值行為

php小編小新將為大家介紹「:=」中的全域變數賦值行為。在早期版本的PHP中,全域變數的賦值需要透過使用關鍵字「global」來聲明。然而,自從PHP 7.4版本引入了「:=」這個全域變數賦值的新語法,我們可以更簡潔地為全域變數賦值,省去了使用「global」關鍵字的步驟。這個新特性不僅提高了程式碼的可讀性和可維護性,還減少了不必要的程式碼量,讓我們更方便地操作全域變數。下面就讓我們一起來詳細了解這個新功能吧!

問題內容

即使程式碼在main 函數 作用域中使用了:=,全域level 仍被指派來自getlevel() 傳回值的值。有人可以用語言規範解釋一下,這是如何可預測和記錄的行為。我的想法是更好地閱讀規範,但我顯然沒有這樣做。

程式碼:https://go.dev/play/p/4pz0vl-2snn

65bcfadd4058

輸出:-

info <nil>
print: info

解決方法

在您的範例中,:= 實際上引入了一個名為level 的新局部變量,它是根據規格,因為全域作用域不同於任何函數作用域:

簡短的變數宣告可以重新宣告變數,前提是它們最初是在同一塊(或參數列表,如果該區塊是函數體)中以相同的類型宣告的。

您看到所描述的行為的原因是您對 level 的使用實際上都沒有引用全域變數。 main 中的用法是從 := 新增的局部變量,print 中的用法是函數參數。刪除參數(在宣告和呼叫網站中),您將看到 printprint: 之後列印一個空字串。

以上是“:=”中的全域變數賦值行為的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除