摘要:以上結果會輸出那么可以看到被作為了變量通過傳遞給了匿名函數作為參數使用如果去掉的注釋,那么以上結果會輸出將上面的函數改寫為以上結果會輸出說明在中第二次為賦值的時候,并沒有傳遞的到函數里面去。
??在項目中,難免會遇到閉包的形式,那么在閉包中,變量的作用域到底是怎么樣的呢。下面有幾個簡單的例子。
e1function test_1() { $a = "php"; $func = function ($b) use ($a) { // $a = "java"; echo $b."_".$a; }; return $func; } $test = test_1(); $test("hello");
以上結果會輸出 hello_php 那么可以看到 $a 被作為了變量 通過use傳遞給了 匿名函數 func 作為參數使用;如果去掉$a = "java"的注釋,那么以上結果會輸出 hello_java
e2:將上面的函數改寫為function test_2() { $a = "php"; $func = function ($b) use ($a) { // $a = "go"; echo $b."_".$a; }; $a = "java"; return $func; } $test = test_2(); $test("hello");
以上結果會輸出 hello_php 說明在test_2中第二次為$a賦值的時候,并沒有傳遞的到 func函數里面去。
同樣的如果去掉 $a = "go";那么以上結果會輸出 hello_go
function test_3() { $a = "php"; $func = function ($b) use (&$a) { //$a = "go"; echo $b."_".$a; }; $a = "java"; return $func; } $test = test_3(); $test("hello");
以上結果會輸出 hello_java 說明在地址引用的時候 變量 a 的值會傳遞到 函數func里面去。
同樣的如果去掉 $a = "go";那么以上結果會輸出 hello_go
以上三個簡單的測試,很明白的說明的閉包里面參數的作用域。
在沒有使用地址引用的時候 匿名函數的變量值,不會隨著外部變量的改變而改變。(閉包的意義)
在使用了地址引用之后,參數值會被外部函數的參數值所改變
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29376.html
摘要:深入系列第八篇,介紹理論上的閉包和實踐上的閉包,以及從作用域鏈的角度解析經典的閉包題。定義對閉包的定義為閉包是指那些能夠訪問自由變量的函數。 JavaScript深入系列第八篇,介紹理論上的閉包和實踐上的閉包,以及從作用域鏈的角度解析經典的閉包題。 定義 MDN 對閉包的定義為: 閉包是指那些能夠訪問自由變量的函數。 那什么是自由變量呢? 自由變量是指在函數中使用的,但既不是函數參數也...
摘要:閉包一詞來源于以下兩者的結合要執行的代碼塊由于自由變量被包含在代碼塊中,這些自由變量以及它們引用的對象沒有被釋放和為自由變量提供綁定的計算環境作用域。在以及及以上等語言中都能找到對閉包不同程度的支持。 溫馨提示:作者的爬坑記錄,對你等大神完全沒有價值,別在我這浪費生命 閉包,好吃嗎 ? 第一次聽到這個詞,很不幸是在一次面試中,可想而知結果很細碎,從此閉包和跨域在我匱乏的前端知識中成為了...
摘要:閉包閉包是什么閉包和匿名函數在中被引入。可以將匿名函數和閉包視作相同的概念。閉包和字符串或整數一樣,是一等值類型。何時使用我們通常把閉包當做函數和方法的回調使用。 閉包 閉包是什么? 1).閉包和匿名函數在PHP5.3中被引入。2).閉包是指在創建時封裝函數周圍狀態的函數,即使閉包所在的環境不存在了,閉包封裝的狀態依然存在,這一點和Javascript的閉包特性很相似。3).匿名函數就...
摘要:當初看這個解釋有點懵逼,理解成閉包就是函數中的函數了。里的閉包最近不滿足于只干前端的活,開始用起了。里的閉包最近在學習語言,讓我們來看一下語言里的閉包。在中,閉包特指將函數作為值返回的情況,被返回的函數引用了生成它的母函數中的變量。 本人開始接觸編程是從js開始的,當時網上很多人說閉包是難點,各種地方對閉包的解釋也是千奇百怪。如今開始接觸js以外的各種編程語言,發現不光是js,php、...
摘要:當初看這個解釋有點懵逼,理解成閉包就是函數中的函數了。里的閉包最近不滿足于只干前端的活,開始用起了。里的閉包最近在學習語言,讓我們來看一下語言里的閉包。在中,閉包特指將函數作為值返回的情況,被返回的函數引用了生成它的母函數中的變量。 本人開始接觸編程是從js開始的,當時網上很多人說閉包是難點,各種地方對閉包的解釋也是千奇百怪。如今開始接觸js以外的各種編程語言,發現不光是js,php、...
閱讀 2229·2019-08-30 10:51
閱讀 785·2019-08-30 10:50
閱讀 1463·2019-08-30 10:49
閱讀 3130·2019-08-26 13:55
閱讀 1591·2019-08-26 11:39
閱讀 3412·2019-08-26 11:34
閱讀 1937·2019-08-23 18:30
閱讀 3381·2019-08-23 18:22