成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PHP 閉包之變量作用域

thekingisalwaysluc / 3224人閱讀

摘要:以上結(jié)果會(huì)輸出那么可以看到被作為了變量通過傳遞給了匿名函數(shù)作為參數(shù)使用如果去掉的注釋,那么以上結(jié)果會(huì)輸出將上面的函數(shù)改寫為以上結(jié)果會(huì)輸出說明在中第二次為賦值的時(shí)候,并沒有傳遞的到函數(shù)里面去。

??在項(xiàng)目中,難免會(huì)遇到閉包的形式,那么在閉包中,變量的作用域到底是怎么樣的呢。下面有幾個(gè)簡(jiǎn)單的例子。

e1
function test_1()
{
    $a = "php";
    $func =  function ($b) use ($a)
    {
       // $a = "java";
        echo $b."_".$a;
    };
    return $func;

}
$test = test_1();
$test("hello");

以上結(jié)果會(huì)輸出 hello_php 那么可以看到 $a 被作為了變量 通過use傳遞給了 匿名函數(shù) func 作為參數(shù)使用;如果去掉$a = "java"的注釋,那么以上結(jié)果會(huì)輸出 hello_java

e2:將上面的函數(shù)改寫為
function test_2()
{
    $a = "php";
    $func =  function ($b) use ($a)
    {
       // $a = "go";
        echo $b."_".$a;
    };
    $a = "java";
    return $func;
}
$test = test_2();
$test("hello");

以上結(jié)果會(huì)輸出 hello_php 說明在test_2中第二次為$a賦值的時(shí)候,并沒有傳遞的到 func函數(shù)里面去。
同樣的如果去掉 $a = "go";那么以上結(jié)果會(huì)輸出 hello_go

e3:現(xiàn)在為$a 加上引用
function test_3()
{
    $a = "php";
    $func =  function ($b) use (&$a)
    {
        //$a = "go";
        echo $b."_".$a;
    };
    $a = "java";
    return $func;
}
$test = test_3();
$test("hello");

以上結(jié)果會(huì)輸出 hello_java 說明在地址引用的時(shí)候 變量 a 的值會(huì)傳遞到 函數(shù)func里面去。
同樣的如果去掉 $a = "go";那么以上結(jié)果會(huì)輸出 hello_go

以上三個(gè)簡(jiǎn)單的測(cè)試,很明白的說明的閉包里面參數(shù)的作用域。
在沒有使用地址引用的時(shí)候 匿名函數(shù)的變量值,不會(huì)隨著外部變量的改變而改變。(閉包的意義)
在使用了地址引用之后,參數(shù)值會(huì)被外部函數(shù)的參數(shù)值所改變

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/29376.html

相關(guān)文章

  • JavaScript深入閉包

    摘要:深入系列第八篇,介紹理論上的閉包和實(shí)踐上的閉包,以及從作用域鏈的角度解析經(jīng)典的閉包題。定義對(duì)閉包的定義為閉包是指那些能夠訪問自由變量的函數(shù)。 JavaScript深入系列第八篇,介紹理論上的閉包和實(shí)踐上的閉包,以及從作用域鏈的角度解析經(jīng)典的閉包題。 定義 MDN 對(duì)閉包的定義為: 閉包是指那些能夠訪問自由變量的函數(shù)。 那什么是自由變量呢? 自由變量是指在函數(shù)中使用的,但既不是函數(shù)參數(shù)也...

    caige 評(píng)論0 收藏0
  • javascript閉包不完全探索記錄01:閉包?啥餡的?

    摘要:閉包一詞來源于以下兩者的結(jié)合要執(zhí)行的代碼塊由于自由變量被包含在代碼塊中,這些自由變量以及它們引用的對(duì)象沒有被釋放和為自由變量提供綁定的計(jì)算環(huán)境作用域。在以及及以上等語(yǔ)言中都能找到對(duì)閉包不同程度的支持。 溫馨提示:作者的爬坑記錄,對(duì)你等大神完全沒有價(jià)值,別在我這浪費(fèi)生命 閉包,好吃嗎 ? 第一次聽到這個(gè)詞,很不幸是在一次面試中,可想而知結(jié)果很細(xì)碎,從此閉包和跨域在我匱乏的前端知識(shí)中成為了...

    TANKING 評(píng)論0 收藏0
  • PHP新特性閉包、匿名函數(shù)

    摘要:閉包閉包是什么閉包和匿名函數(shù)在中被引入。可以將匿名函數(shù)和閉包視作相同的概念。閉包和字符串或整數(shù)一樣,是一等值類型。何時(shí)使用我們通常把閉包當(dāng)做函數(shù)和方法的回調(diào)使用。 閉包 閉包是什么? 1).閉包和匿名函數(shù)在PHP5.3中被引入。2).閉包是指在創(chuàng)建時(shí)封裝函數(shù)周圍狀態(tài)的函數(shù),即使閉包所在的環(huán)境不存在了,閉包封裝的狀態(tài)依然存在,這一點(diǎn)和Javascript的閉包特性很相似。3).匿名函數(shù)就...

    luzhuqun 評(píng)論0 收藏0
  • 談?wù)勎宜斫獾?em>閉包,js、php、golang里的closure

    摘要:當(dāng)初看這個(gè)解釋有點(diǎn)懵逼,理解成閉包就是函數(shù)中的函數(shù)了。里的閉包最近不滿足于只干前端的活,開始用起了。里的閉包最近在學(xué)習(xí)語(yǔ)言,讓我們來看一下語(yǔ)言里的閉包。在中,閉包特指將函數(shù)作為值返回的情況,被返回的函數(shù)引用了生成它的母函數(shù)中的變量。 本人開始接觸編程是從js開始的,當(dāng)時(shí)網(wǎng)上很多人說閉包是難點(diǎn),各種地方對(duì)閉包的解釋也是千奇百怪。如今開始接觸js以外的各種編程語(yǔ)言,發(fā)現(xiàn)不光是js,php、...

    betacat 評(píng)論0 收藏0
  • 談?wù)勎宜斫獾?em>閉包,js、php、golang里的closure

    摘要:當(dāng)初看這個(gè)解釋有點(diǎn)懵逼,理解成閉包就是函數(shù)中的函數(shù)了。里的閉包最近不滿足于只干前端的活,開始用起了。里的閉包最近在學(xué)習(xí)語(yǔ)言,讓我們來看一下語(yǔ)言里的閉包。在中,閉包特指將函數(shù)作為值返回的情況,被返回的函數(shù)引用了生成它的母函數(shù)中的變量。 本人開始接觸編程是從js開始的,當(dāng)時(shí)網(wǎng)上很多人說閉包是難點(diǎn),各種地方對(duì)閉包的解釋也是千奇百怪。如今開始接觸js以外的各種編程語(yǔ)言,發(fā)現(xiàn)不光是js,php、...

    zhoutao 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<