2017-04-23 48 views
0

首先,我是一位JavaScript開發人員,最近我開始使用Angular,所以這對於一位經驗豐富的JavaScript程序員來說可能是非常明顯的。

我一直在線上通過教程來編寫使用Karma和Jasmine的Angular應用程序的測試。在觀看教程編寫一些HTML表達角指令測試我經常遇到方法

$compile(htmlExpressionAsString)($scopeToWhichThisHasToBeEvaluated) 

有些地方我已經看到了這個語法

我從視頻教程中瞭解到,它意味着編譯表達式並根據第二個提供的範圍對其進行評估插入語。

我不明白的是幕後發生了什麼。

函數如何接受一個參數$compile(),然後神奇地給它一個範圍參數的另一個括號?這個語法是如何有效的?我在這裏錯過了什麼概念?只是問,因爲我找不到明確的答案,我真的不知道在這裏搜索什麼。

是否$compile(expression)返回函數?

+1

是的,$編譯服務會返回一個鏈接功能。有關更多信息,請參閱[AngularJS $ compile服務API參考 - 用法](https://docs.angularjs.org/api/ng/service/$compile#usage)。 – georgeawg

回答

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