JS를 사용하다 문법적인 문제가 몇 가지 발생했는데, 제대로 이해하지 못해서 기초를 보충해야 했어요!
익명 함수 익명 함수
이름이 없는 익명 함수를 "익명 함수"라고 합니다. 예를 들어 x y}
이름 없음 , 물론 직접 호출하거나 호출할 수는 없습니다. 기껏해야 값을 할당하거나 클로저로 처리할 수 있습니다(클로저에 대해서는 아래에서 설명합니다).
var sum =function( x,y){return x y};
alert(sum(1,2))
이번에는 전통적인 쓰기 함수 sum(x,y ){ return x y}. sum 변수에 함수가 포함되어 있기 때문에 사람들은 더 OOP적인 느낌을 받습니다.
함수는 클로저 방식으로도 호출할 수 있습니다. >(functioin(x,y){return x y})(1,2) //반환값 3
코드가 매우 간결합니다. (exp)() 형식의 괄호 사용에 유의하세요. 이 사용법을 클로저라고 부를 수 있습니다.
다음 괄호는 매개변수입니다. 이 매개변수를 fn에 넣고 즉시 계산하여 값 3을 얻습니다. 이는 실제로 표현식 작업입니다. 의외로 fn 함수 본문을 넣어 계산에 참여할 수도 있습니다^_^ (함수를 표현식으로 사용)! (기본 스킬: 표현식, 즉 표현식의 길이에 관계없이 계산 후에 항상 값이 반환된다는 의미)
fn은 매개변수 형식으로도 전달할 수 있습니다(함수를 다른 인자로 전달) 함수)
var main_fn = 함수(fn,x,y){return fn(x,y)}
var sum = 함수(x,y){
return x y;
}
alert(main_fn(sum,1,2)) // 결과:3
요약(IBM 엔지니어의 기사에 따르면 IBM 웹사이트를 참조하세요. 기억하는 것이 가장 좋습니다. )
함수에는 항상 이름이 있을 필요가 없습니다.
함수는 다른 값과 마찬가지로 변수에 할당될 수 있습니다.
함수 표현식은 괄호로 묶어 작성할 수 있습니다.
함수는 다른 함수에 인수로 전달될 수 있습니다.
클로저에 대해 다시 이야기해 보겠습니다. 클로저의 기능은 도메인을 형성하는 것입니다. 2 3) 괄호는 우선순위가 정해져 있습니다. 즉, 괄호 안의 내용은 범위로 분류됩니다. 이 범위 내에서 무엇을 하든 상관없습니다. 그 안에서 무엇을 하든 상관없습니다. 괄호의 외부 세계와 관련이 있습니다 (말도 안되는 것 같습니다. - 제 생각에는 그렇습니다) @#@라고 쓰여 있습니다. 프로그램 이해에도 마찬가지입니다. JS에는 함수 범위가 있으므로 이를 사용하여 객체를 가리키는 데 문제가 있는 경우 클로저 사용을 고려할 수 있습니다. 구체적인 예는 http://www.svendtofte.com/code/practical_function_js/에 있습니다.