这个AngularJS过滤器表达式是哪个javascript构造?
如果我们希望在控制器端使用AngularJS中的过滤器,我们将使用这个AngularJS过滤器表达式是哪个javascript构造?,javascript,angularjs,Javascript,Angularjs,如果我们希望在控制器端使用AngularJS中的过滤器,我们将使用 $filter('filter')(array, expression, comparator, anyPropertyKey) 我不明白这使用的是哪种javascript结构。我的意思是,它不是一个函数,它不是赋值表达式,它不是一个自动执行的函数。它是什么?它是一个函数,返回一个函数,然后执行该函数 function foo() { return function bar() {}; } foo()(); //
$filter('filter')(array, expression, comparator, anyPropertyKey)
我不明白这使用的是哪种javascript结构。我的意思是,它不是一个函数,它不是赋值表达式,它不是一个自动执行的函数。它是什么?它是一个函数,返回一个函数,然后执行该函数
function foo() {
return function bar() {};
}
foo()();
// equivalent to:
var b = foo();
b();
它是一个函数,返回一个函数,然后执行
function foo() {
return function bar() {};
}
foo()();
// equivalent to:
var b = foo();
b();
它是一个返回函数的函数。 以下是它的源代码:
function filterFilter() {
return function(array, expression, comparator, anyPropertyKey) {
if (!isArrayLike(array)) {
if (array == null) {
return array;
} else {
throw minErr('filter')('notarray', 'Expected array but received: {0}', array);
}
}
anyPropertyKey = anyPropertyKey || '$';
var expressionType = getTypeForFilter(expression);
var predicateFn;
var matchAgainstAnyProp;
switch (expressionType) {
case 'function':
predicateFn = expression;
break;
case 'boolean':
case 'null':
case 'number':
case 'string':
matchAgainstAnyProp = true;
//jshint -W086
case 'object':
//jshint +W086
predicateFn = createPredicateFn(expression, comparator, anyPropertyKey, matchAgainstAnyProp);
break;
default:
return array;
}
return Array.prototype.filter.call(array, predicateFn);
};
}
它是一个返回函数的函数。 以下是它的源代码:
function filterFilter() {
return function(array, expression, comparator, anyPropertyKey) {
if (!isArrayLike(array)) {
if (array == null) {
return array;
} else {
throw minErr('filter')('notarray', 'Expected array but received: {0}', array);
}
}
anyPropertyKey = anyPropertyKey || '$';
var expressionType = getTypeForFilter(expression);
var predicateFn;
var matchAgainstAnyProp;
switch (expressionType) {
case 'function':
predicateFn = expression;
break;
case 'boolean':
case 'null':
case 'number':
case 'string':
matchAgainstAnyProp = true;
//jshint -W086
case 'object':
//jshint +W086
predicateFn = createPredicateFn(expression, comparator, anyPropertyKey, matchAgainstAnyProp);
break;
default:
return array;
}
return Array.prototype.filter.call(array, predicateFn);
};
}