Angular를 처음 접할 때 약간 혼란스럽습니다. 다음 컨트롤러 기능을 예로 들어보겠습니다.
으아아아함수 선언인데, $scope는 형식적인 매개변수여야겠죠? 그러나 $scope를 s와 같은 다른 식별자로 변경하면 작동하지 않습니다. $scope는 hello 함수가 호출될 때 전달되는 실제 매개변수임을 알 수 있습니다. 하지만 이 세 줄의 코드는 함수 선언인데 실제 매개변수가 전달되는 이유는 무엇일까요?
아마도 이것이 일반적인 함수 선언이 아니라는 것을 깨달았을 것입니다. 아마도 Angular의 컨트롤러 함수 바인딩 메커니즘과 관련이 있는 것일까요? 정확히 어떻게 생겼나요?
이런 종류의 매개변수 전달을 통해 종속성을 얻는 것은 종속성 주입의 표현 중 하나인 AngularJS의 주요 기능입니다.
그런데 왜 매개변수 선언만으로 종속성을 얻을 수 있나요?
AngularJS는
$injector
를 사용하여$injector
管理依赖的查询与加载,比如如果没有显示声明,
즉, 다음과 같이 선언할 수도 있습니다.🎜 으아아아$injector
와 같은 종속 쿼리 및 로딩을 관리합니다. 으아아아 명시적인 선언이 없으면$injector
는 매개변수 이름을 기준으로 종속성을 추론합니다. 이때 매개변수의 순서는 의미가 없습니다.
글쎄요, 이건 그냥 함수 선언으로 작성한 것입니다. 형식 매개변수의 이름이 중요한지 여부는 전적으로 독자가 결정합니다. ECMAScript 표준 파서는 중요하다고 생각하지 않지만(아마도) Angular는 js를 사용했습니다. "js" 파서를 작성했습니다. . . 이런 식으로 함수 매개변수의 이름이 중요합니다
http://note.sdo.com/u/635412003927148913/n/s6cBN~lcIHwG4M1-Y000LW