JavaScript 면접 질문 — 함수식 프로그래밍
지금 제 이메일 목록을 구독하려면 http://jauyeung.net/subscribe/으로 전화하십시오.
전방 개발자의 일자리를 얻기 위해서 우리는 코딩 면접을 완성해야 한다.
이 문서에서는 JavaScript의 일부 함수 프로그래밍 문제를 다룹니다.
함수식 프로그래밍은 무엇입니까?무엇이 자바스크립트를 함수식 언어로 만들었습니까?
함수식 프로그래밍은 일종의 프로그래밍 모델로 우리가 응용 프로그램을 구축하는 방식을 결정한다.함수 프로그래밍은 프로그램의 함수를 수학 함수로 간주한다.
이것은 우리가 상태를 바꾸고 가변 데이터를 만드는 것을 피하는 것을 의미한다.이것 또한 함수가 순수함수라는 것을 의미한다. 즉, 같은 입력을 주고 함수가 같은 것을 되돌려준다는 것이다.
함수는 함수 프로그래밍에서도 부작용이 있어서는 안 된다. 왜냐하면 함수를 불순하게 만들 수 있기 때문이다.
JavaScript 함수도 일류 함수입니다.이것은 우리가 함수를 매개 변수로 사용하거나 함수를 되돌려주는 함수로 사용할 수 있다는 것을 의미한다.
패킷을 닫는 것도 지원합니다. 패킷에서 부모 함수에서 일부 값을 사용할 수 있는 함수를 되돌려줍니다.
예를 들어, JavaScript 배열에는
map
, filter
및 reduce
메서드가 있으며 배열의 항목을 처리할 때 콜백 함수를 호출합니다.map
, filter
과 reduce
은 고급 함수이다. 왜냐하면 그들은 함수를 매개 변수로 받아들이기 때문이다.함수를 되돌려주는 함수도 고급 함수다.예를 들어,
map
메서드는 다음과 같이 사용할 수 있습니다.const nums = [1,2,3];
const doubleNums = nums.map(x => x*2);
위 코드에서 우리는 함수 x => x*2
을 map
으로 전송할 것이다.x => x*2
은 항목별 코드 지정에 따라 계산한 다음 새 값을 포함하는 새 그룹을 되돌려줍니다.그리고 우리는 doubleNum
을 얻었습니다. [2, 4, 6]
입니다.무엇이 고급 함수입니까?
고급 함수는 함수를 매개 변수로 하거나 되돌아오는 함수다.
예를 들어,
const hoc = (fn)=> fn();
hoc(()=>{
console.log('foo');
});
위의 코드는 hoc
함수가 있는데, 이것은 fn
함수를 받아들이고 운행한다.그리고 우리가 다음과 같은 전화를 했을 때:
hoc(()=>{
console.log('foo');
});
그리고 우리는 foo
을 기록할 것이다. 왜냐하면 우리가 전달한 함수는 hoc
함수에서 운행하기 때문이다.왜 함수를 제1류 대상이라고 합니까?
JavaScript 함수는 다른 유형의 객체로 간주되기 때문에 최상위 객체입니다.
이것은 함수가 변수, 대상, 또는 수조에 저장될 수 있다는 것을 의미한다.그것들은 매개 변수로 함수에 전달될 수 있다.그 밖에 그것들도 함수에서 되돌아올 수 있다.
예를 들어, 다음과 같이 함수를 변수에 지정할 수 있습니다.
let foo = () => {};
우리는 변수 foo
에 화살표 함수를 분배했다.또한 다음과 같이 매개변수로 전달될 수 있습니다.
let foo = () => {
console.log('foo');
};
let bar = (fn) => fn();
bar(foo);
그리고 bar
으로 전화를 걸어 foo
으로 전화를 걸 수 있습니다.우리는 단지 foo
의 인용을 전했을 뿐, 우리는 그것을 일컫지 않는다.따라서 foo
뒤에는 괄호가 없습니다.다음과 같은 함수를 사용하여 반환할 수 있습니다.
let foo = () => {
return ()=> console.log('foo')
};
`
foo()();
위의 foo
함수는 'foo'
을 기록한 함수를 되돌려줍니다.그리고 우리는 마지막 줄처럼 그것을 불렀다.
JavaScript 함수는 객체 및 배열에도 저장될 수 있습니다.예를 들어 다음과 같이 쓸 수 있습니다.
let obj = {
foo: () => {
console.log("foo");
}
};
obj.foo();
우리는 foo
함수를 속성으로 한 대상에 놓고 마지막 줄에서 그것을 호출할 것이다.마지막으로 다음과 같이 배열에 저장할 수 있습니다.
const arr = [
() => {
console.log("foo");
}
];
`
arr[0]();
어레이에 push
으로 전화를 걸 수도 있습니다.const arr = [];
`
arr.push(() => {
console.log("foo");
});
`
arr[0]();
상대가 뭐예요?
arguments
대상은 유사한 수조의 대상으로 우리가 함수에 전달하는 매개 변수를 가지고 있다.Array-like는 length
속성이 있음을 의미한다. 우리는 색인을 사용하여 항목을 가져와서 순환할 수 있지만 map
, reduce
또는 filter
등 어떠한 그룹 방법도 없다.그것은 전통 함수의 매개 변수만 가져옵니다.
예를 들어 다음과 같이 쓸 수 있습니다.
function foo() {
console.log(arguments);
}
`
foo(1, 2, 3, 4, 5);
그리고 console.log
은 우리가 전송한 foo
의 매개 변수, 즉 1, 2, 3, 4와 5를 되돌려준다.Arrow 함수는
arguments
객체에 바인딩되지 않으므로 모든 매개변수를 이 객체와 함께 Arrow 함수에 전달할 수 없습니다.for...of
순환도 arguments
대상에 적용되기 때문에 우리는 다음과 같은 방식으로 매개 변수를 순환할 수 있다.function foo() {
for (let arg of arguments) {
console.log(arg);
}
}
`
foo(1, 2, 3, 4, 5);
우리는 확장 연산자를 사용하여 arguments
을 하나의 그룹으로 변환할 수 있다.예를 들어 다음과 같이 쓸 수 있습니다.function foo() {
console.log([...arguments]);
}
`
foo(1, 2, 3, 4, 5);
그리고 [1, 2, 3, 4, 5]
을 기록할 겁니다.결론
JavaScript에는 다양한 함수 프로그래밍 기능이 있습니다.함수는 일급 대상이다. 이것은 함수가 다른 어떤 대상과 같다는 것을 의미한다.
전통 함수에 전달되는 매개 변수를 얻기 위해 이상하고 유사한 매개 변수를 가지고 있다.
Reference
이 문제에 관하여(JavaScript 면접 질문 — 함수식 프로그래밍), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aumayeung/javascript-interview-questions-functional-programming-4f1l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)