본문 바로가기

Javascript13

[Javascript] Callbacks: forEach, map, filter Callback Functions 지난 포스트에서 언급했듯이, Javascript의 함수는 first-class 함수다. first-class 함수의 특성 중 하나는 일반적인 값들을 함수에 넘겨주듯, 함수를 함수에 넘겨주는 것 역시 가능하다는 것이었다. 다른 함수를 인자로 받아들이거나 return하는 함수를 "higher-order function"이라 칭하고, 다른 함수에 인자로 들어가는 함수를 우리는 "Callback function"이라고 부른다. 특히 배열에서 콜백 함수를 자주 볼 수 있는데, 배열 메소드의 내부로 함수가 전달되는 것이다. 이번 글에서는 배열에서 콜백 함수와 함께 자주 활용되는 다음의 3가지 메소드에 대해 알아 보도록 한다. forEach()map()filter() forEach(.. 2018. 4. 14.
First-Class Functions 함수는 First-Class다!Javascript는 First-Class Function을 갖고 있다. Javascript의 함수는 First-Class이다.무슨 뜻일까? Javascript에서 함수는, 1. 변수에 저장할 수 있고2. 다른 함수의 인자(argument)로 전달할 수 있고(Callback function)3. 함수의 리턴값으로 쓸 수 있다. 어떤 프로그래밍 언어이든 위의 세 가지가 모두 가능하면, 그 언어는 "First-Class Function"을 갖는다고 할 수 있다.(First-class function - Wikipedia 참조) First-class function이 의미하는 것은 즉, 일반적인 다른 data structure, 이를테면 숫자, string, object, 배열 .. 2018. 4. 14.
[ES6] for와 forEach, for...of / Spread... & ...Rest Operator 어떤 반복적인 작업을 하고자 할 때, 우리는 for loop을 자주 활용한다.const digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; for (let i = 0; i < digits.length; i++) { console.log(digits[i]); } 한편 Javascript에서는 배열의 반복을 위한 forEach라는 메소드를 제공한다.var donuts = ["jelly donut", "chocolate donut", "glazed donut"]; donuts.forEach(function(donut) { donut += " hole"; donut = donut.toUpperCase(); console.log(donut); });배열의 이름 뒤에 .forEach를 쓰고, .. 2018. 3. 16.
[ES6] Destructuring / Object literal shorthand ES6에서 추가된 또 다른 기능은 "Destructuring"이다. const point = [10, 25, -34]; const x = point[0];const y = point[1];const z = point[2]; console.log(x, y, z); const gemstone = { type: 'quartz', color: 'rose', carat: 21.29}; const type = gemstone.type;const color = gemstone.color;const carat = gemstone.carat; console.log(type, color, carat); 배열과 객체(object)에서 요소들을 다른 변수에 저장하려면, 위와 같이 각각의 요소들을 하나씩 참조하는 방식을 써야 .. 2018. 3. 16.
[ES6] var와 let & const 다음과 같은 코드가 있다. function getClothing(isCold) { if (isCold) { var freezing = "Grab a jacket!"; } else { var hot = "It's a shorts kind of day"; console.log(freezing); }} 이 함수를 호출하면 어떻게 될까?else 블록 안에 freezing이 없기 때문에 Referrence error가 날 것 같지만, Hoisting으로 인해 예상 밖의 결과가 발생하는데, undefined가 출력된다.run-time에서, hoisting이 일어난 코드는 다음과 같이 생겼을 것이다. function getClothing(isCold) { var freezing, hot; if (isCold) { f.. 2018. 3. 14.