来自angularjs 1.3来源 有人知道关于IE注释的主要if / else语句()在这里做了什么?我认为这是一个基本的错误/类型检查 - 即。如果你没有在fn参数中提供一个函数 - 那么按原样返回它,不要破坏整个程序的流程。但该评论似乎表明与IE有更多关系。
问题:
注释是否意味着angular.bind是否与Array.prototype.slice.call一起提供为fn。它会停止并返回fn的值(bc是本机函数)? 如果是这样的话,这在IE中是如何工作的? 我理解它是否清楚 - 如果在此angular.bind中提供本机功能 - 那么在IE中它将无法正常执行?
function bind(self, fn) {
var curryArgs = arguments.length > 2 ? sliceArgs(arguments, 2) : [];
if (isFunction(fn) && !(fn instanceof RegExp)) {
/* commenting out below to highlight the if/else
return curryArgs.length
? function() {
return arguments.length
? fn.apply(self, curryArgs.concat(slice.call(arguments, 0)))
: fn.apply(self, curryArgs);
}
: function() {
return arguments.length
? fn.apply(self, arguments)
: fn.call(self);
};
*/
} else {
// in IE, native methods are not functions so they cannot be bound (note: they don't need to be)
return fn;
}
}
以下是source code
的链接