$func = function( $param ) {
echo $param;
};
$func( 'some string' );
这样做有什么意义呢,和给function命个名有何不同
function test($param){
echo $param;
}
test('some')
$func = function( $param ) {
echo $param;
};
$func( 'some string' );
这样做有什么意义呢,和给function命个名有何不同
function test($param){
echo $param;
}
test('some')
这不是闭包吧,闭包首要条件是函数里return函数,你这只是普通的函数而已。前者是匿名函数,后者是普通的函数。
举个例子,下面这段代码可以正常运行
// 普通函数
function a ($param) {
console.log('a', $param)
}
// 匿名函数
var b = function ($param) {
console.log('b', $param)
};
a(1);
b(2);
这段会报错,b未定义
a(1);
b(2);
function a ($param) {
console.log('a', $param)
}
var b = function ($param) {
console.log('b', $param)
};
因为普通函数会提升变量,而匿名函数只是一个普通的表达式,不会提升,运行到b(2)的时候,b是未声明的。
这两个的区别是var test = function(){...}
我可以把这个test声明成var,let
function test(){.....} 没法声明成 var,let
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
闭包简单说你可以把他理解成,在javascript实现公有,私有,和特权变量。再直接点就是 private变量的get,set操作,闭包创建的内部变量,使这些变量不能被外部随意修改,同时又可以通过指定的函数接口来操作更改。
例子:模拟私有变量
这里,
Counter
函数返回两个闭包,函数increment
和函数get
。 这两个函数都维持着 对外部作用域 Counter 的引用,因此总可以访问此作用域内定义的变量count
.