首先,我是一名新手JavaScript开发人员,我最近开始使用Angular,所以对于经验丰富的JavaScript程序员来说,这可能是非常明显的。
我一直在线阅读教程,使用Karma和Jasmine为Angular应用程序编写测试。在观看使用某些HTML表达式编写角度指令测试的教程时,我经常遇到方法
$compile(htmlExpressionAsString)($scopeToWhichThisHasToBeEvaluated)
有些地方我见过这种语法
我从视频教程中知道,它意味着编译表达式并根据第二个括号中提供的范围对其进行评估。
我不明白的是幕后发生的事情。
一个函数如何接受一个参数$compile()
,然后神奇地给另一个带有范围参数的括号?该语法有效吗?我在这里失踪的概念是什么?只是因为我找不到确定的答案,我真的不知道在这里搜索什么。
$compile(expression)
会返回一个函数吗?
答案 0 :(得分:2)
语法有效,因为$compile()
返回一个函数,第二个()
调用返回的函数
简单示例:
function foo(a) {
// return a function
return function(b) {
// return result when this function is called
return a + b;
}
}
let result = foo(3)(3);
console.log('Result is',result); //6