1. 程式人生 > >筆記2018年9月27日16:10:45

筆記2018年9月27日16:10:45

session_start();
isset($_SESSION['xxx']);
unset($_SESSION['xxx']);
session_destroy();


setcoockie(name,value,expire,path,domain,security);
$_COOKIE['xxx'];


ini_set('display_errors', 'On');
error_reporting(E_ALL);

js閉包

Javascript語言特有的"鏈式作用域"結構(chain scope),子物件會一級一級地向上尋找所有父物件的變數。所以,父物件的所有變數,對子物件都是可見的,反之則不成立

this的上下文基於函式呼叫的情況。和函式在哪定義無關,而和函式怎麼呼叫有關。

在全域性上下文(任何函式以外),this指向全域性物件(windows)

在函式內部時,this由函式怎麼呼叫來確定

當函式作為物件方法呼叫時,this指向該物件

var name = "The Window";
var object = {
  name : "My Object",
  getNameFunc : function(){
    return function(){
      return this.name;
    };
  }
};
alert(object.getNameFunc()()); // The Window
等同下面三行程式碼
var fun = object.getNameFunc();
var res = fun();//真正呼叫的時候
alert(res);



----------------------------------------------------------------------------
var name = "The Window";
var object = {
    name : "My Object",
  getNameFunc : function(){
      var that = this;
    return function(){
        return that.name;
    };
  }
};
alert(object.getNameFunc()());// My Object

php閉包

閉包可以儲存所在程式碼塊上下文的一些變數和值。PHP在預設情況下,匿名函式不能呼叫所在程式碼塊的上下文變數,而需要通過使用use關鍵字

function getMoney() {
    $rmb = 1;
    $dollar = 6;
    $func = function() use ( $rmb ) {
        echo $rmb;
        echo $dollar;
    };
    $func();
}

getMoney();

//輸出:
//1
//報錯,找不到dorllar變數




//use所引用的也只不過是變數的一個副本而已。
function getMoney() {
    $rmb = 1;
    $func = function() use ( $rmb ) {
        echo $rmb;
        //把$rmb的值加1
        $rmb++;
    };
    $func();
    echo $rmb;
}

getMoney();

//輸出:
//1
//1



//加上符號&
function getMoney() {
    $rmb = 1;
    $func = function() use ( &$rmb ) {
        echo $rmb;
        //把$rmb的值加1
        $rmb++;
    };
    $func();
    echo $rmb;
}

getMoney();

//輸出:
//1
//2