JavaScript 中的所有函数都是变量,它允许在运算符位置使用表达式:
function plus (a, b) {
return a + b;
}
plus; // => [Function: plus]
function minus (a, b) {
return a - b
}
minus; // => [Function: minus]
function plusAbs (a, b) {
return (b > 0 ? plus : minus)(a, b);
}
plusAbs(3, -3); // => 6
plusAbs(3, 3); // => 6
var plus = 4;
plus; // => 4 (no longer a function)
plusAbs(3, 3); // ERROR! 4 is not a function
正如 Scheme 它不评估为 plus 或 minus 而是 plus 和 minus 评估的结果。例如。 [function minus] 和 not 变量。
PHP 中的函数不能通过名称来实现,而是绑定到函数的变量:
function plusAbs ($a, $b) {
$add = function($a, $b) { return $a+$b; };
$sub = function($a, $b) { return $a-$b; };
return ($b < 0 ? $sub : $add)($a, $b);
}
plusAbs(3, -3); // => 6
与命名函数最接近:
function add($a, $b) { return $a+$b; }
function sub($a, $b) { return $a-$b; }
function plusAbs ($a, $b) {
return call_user_func($b < 0 ? 'sub' : 'add', $a, $b);
}
plusAbs(3, -3); // => 6
请注意,这在操作符位置不再有表达式。