相关疑难解决方法(0)

JavaScript闭包如何工作?

您如何向知道其所包含概念的人(例如函数,变量等)解释JavaScript闭包,但不了解闭包本身?

我已经看过维基百科上给出的Scheme示例,但遗憾的是它并没有帮助.

javascript variables closures scope function

7644
推荐指数
82
解决办法
139万
查看次数

PHP关闭是否被破坏或者我错过了什么?

我一直在阅读PHP 5.3的新功能,其中一个主要功能是闭包.

除非我非常错误,否则PHP开发人员要么:
a)使用匿名函数来混淆闭包
b)在我测试的PHP 5.3.1中,闭包被破坏了

维基百科所说的闭包是匿名函数的机制加上函数的父范围变量与函数范围的绑定.最后一部分似乎在PHP中被打破了.

我已经检查了PHP错误,并没有发现任何关于这个,奇怪的是.

这是我正在测试的方式:

<?php

function getFun() {
    $x = 2;
    return function() {
        return $x;
    };
}
$f = getFun(); // getFun()(); doesn't work -.-
var_dump($f()); // $f() == null
Run Code Online (Sandbox Code Playgroud)

在实际实现闭包的语言中,它返回2:

def f():
    x = 2
    return lambda: x
print(f()()) # prints 2
Run Code Online (Sandbox Code Playgroud)

alert((function() {
    var x = 2;
    return function() {
        return x;
    };
})()()); // alerts 2
Run Code Online (Sandbox Code Playgroud)

那么,我错了还是?

php closures

8
推荐指数
1
解决办法
539
查看次数

标签 统计

closures ×2

function ×1

javascript ×1

php ×1

scope ×1

variables ×1