자바스크립트 문자열로 함수를 실행하는 방법
·
개발/JavaScript
함수의 이름을 변수의 문자열로 저장하고, 이 문자열을 사용해 함수를 호출할 수 있습니다. 문자열로 과연, 함수를 어떻게 실행할 수 있을까요? 몇 가지 방법이 있습니다. 이 글은 How to execute a Javascript function when its name as a string 및 How to execute a JavaScript function when I have its name as a string의 예시 및 답변을 인용 및 정리한 글입니다. eval() eval을 사용하는 방법으로 간단하지만, 정말로 꼭 사용해야 하는 경우가 아니라면 사용하지 않는 것이 좋습니다. function fnLogin(userName, password) { console.log("User: " + userNam..
자바스크립트 메모이제이션 설명
·
개발/JavaScript
메모이제이션이란? 메모이제이션은 함수의 호출 결과를 캐싱하여, 동일한 아규먼트로 함수가 재호출될 때 저장해두었던 값을 리턴하는 방식입니다. 이는 자바스크립트 뿐만이 아닌, 여러 프로그램 언어에서도 흔하게 사용됩니다. 메모이제이션은 특별히 재귀 함수에서 유용하게 사용될 수 있습니다. function factorial(num) { if(num === 1) { return 1; } return num * factorial(num - 1); } factorial(3) factorial(3)을 통해 factorial(3), factorial(2), factorial(1)이 실행됩니다. 메모이제이션을 활용하면, 다음 번에 factorial(3) 실행 시 재귀 함수를 반복하지 않아도 됩니다. 또한 factorial(..
익숙한 일상의 소중함에 대하여 ⏐ 일상 에세이 ⏐ 29
·
기록/일상 에세이
낯선 도시나 해외로 홀로 여행을 떠날 때면 이방인이 된 나를 발견하곤 했다. 세상은 본래부터 나와 무관하게 흘러간다는 것은 알고 있었지만, 실제로 아무도 나를 신경쓰지 않는 낯선 환경 속에서 이내 고립감을 느끼게 되었으며, 이러한 고립감은 낯선 이방인을 향하는 무관심한 시선을 통해 가중되곤 했다. 여행 중에 만난 인연이 유독 특별하게 느껴지는 이유는 그러한 만남의 순간을 통해 비로소 고립에서 벗어나게 되기 때문이었다. 그렇게 나는 누군가에게 무엇이 될 수 있었다. 여행을 통해 만났던 인연들을 기억해 본다. 누군가와는 사랑을 했고, 누군가와는 좋은 친구가 되었으며, 누군가와는 짧게나마 함께 여정을 같이 했다. 낯선 곳에서, 예기치 않게 만나게 되는 모든 소중한 인연 속에서 서로의 존재는 무척이나 소중했다...
ㅡ 9 더 사랑하고, 더 사랑받는 일
·
기록/사랑에 대하여
내가 상대를 사랑하는만큼, 상대가 나를 사랑하고 있지 않다는 마음이 들 때, 우리는 종종 사랑하는 일에 좌절감을 느끼곤 한다. 그러나 사랑은 서로가 동일한 방향에서, 동일한 깊이로 서로를 사랑하는 것이 아니라, 상대가 바라볼 수 없는 방향에서, 서로 다른 깊이의 고백을 실천하는 일이다. 우리는 누군가를 일방적으로 사랑할 수 없다. 상대가 우리를 조금이라도 사랑하지 않는다면 말이다. 실제로 모든 사랑은 언제나 불균형적이다. 누군가는 상대를 더 많이 사랑할 것이고, 누군가는 더 많은 사랑을 받을 것이다. 그리고 이는 모두가 기뻐하고, 고마움을 느껴야 하는 일이다. 누군가를 더 사랑할 수 있음에, 또한 누군가에게 더 사랑받을 수 있음에 말이다. 성숙한 사랑의 마음가짐은 언제나 이러한 불균형성을 기꺼이 받아들일..
자바스크립트 arguments를 사용한 가변 인자 함수 활용
·
개발/JavaScript
자바스크립트의 aruments는 유사 배열 객체를 생성하는 내부 함수입니다. 이는 함수 호출 시, 함수에 선언된 매개 변수보다 더 많은 인자를 전달하는 경우 등에 활용할 수 있습니다. 유사 배열(Array-like)이란 arguments가 길이 속성과 프로퍼티를 갖고 있지만, 배열에서 사용할 수 있는 내장 메소드인 forEach(), map() 등을 사용할 수 없는 객체를 의미합니다. 먼저, arguments의 작동 방식을 이해해 보도록하겠습니다. 아래의 경우처럼, 각 함수에 할당한 인자가 arugments에 유사 배열 형태로 할당됩니다. function func1(a, b, c) { console.log(arguments[0]); // 1 console.log(arguments[1]); // 2 con..
자신만의 이야기를 쓰는 사람들에게 ⏐ 일상 에세이 ⏐ 28
·
기록/일상 에세이
가끔 블로그를 돌아다니다 보면 자신만의 이야기를 적어 내려가는 이들을 우연히 발견하곤 한다. 구글 SEO 최적화와는 거리가 먼 글들이라 대부분 검색에는 걸리지 않는, 어쩌면 돈 안되는 이야기들 적는 사람들이 있다. 나는 아주 오래 전부터 인터넷 상에 글을 써왔다. 그러니까 거의 처음으로 나만의 노트북을 갖게 되었던 스무살 무렵부터 적어도 10년이 넘게 글을 써왔다. 그래서 글을 잘 썼다는 이야기는 전혀 아니다. 싸이월드가 한창이던 때는 새벽 3시, 나만의 감성 터지는 글을 게시판에 올렸다가 다음 날 지우기 일쑤였고, 페이스북이 인기있던 때도 다음 날 이불킥을 차기 일쑤였다. 지금에야 그런 글을 잘 공유하지 않지만, 여전히 나는 생각과 감정을 기록해 두는 것을 좋아한다. 그때의 나는 왜 그랬을까? 아마도 ..
flex 속성 사용 방법: 좌측, 우측, 중앙 정렬 등
·
개발/CSS
CSS flex의 이해 CSS flex는 크게 컨테이너와 아이템으로 구성됩니다. flex 속성을 통해 아이템을 정렬하려면, 컨테이너가 필수적입니다. 즉, 기본적으로 부모 태그에 display: flex; 또는 display: inline-flex 속성이 적용되어 있어야 합니다. 두 방식의 차이점은 컨테이너의 수직 추가, 수평 추가의 차이입니다. 부모 요소에 flex 속성을 추가하면, 자식 요소에는 자동으로 해당 속성 효과가 부여됩니다. flex속성은 컨테이너와 아이템 즉, 부모 요소와 지식 요소를 함께 사용합니다. 아이템 정렬은 주축(main-axis)에 의해 결정됩니다. 기본 값은 row이며, 이는 왼쪽에서 오른쪽으로 아이템이 정렬됨을 의미합니다. 이를 column으로 변경시 주축 방향이 위에서 아래로..
자바스크립트 클로저 설명, 예시, 활용
·
개발/JavaScript
자바스크립트의 모든 함수는 함수가 선언된 당시의 주변 환경을 기억합니다. 여기서 주변 환경이란 함수가 정의된 상위 스코프, 즉 실행 컨텍스트를 의미합니다. 이는 함수를 호출하는 위치가 아닌, 선언된 위치에 따라 결정되며, 따라서 함수는 언제나 상위 스코프의 식별자를 참조하고, 이에 할당된 값을 변경할 수 있습니다. 클로저란? 클로저는 함수와 해당 함수가 참조하고 있는 주변 환경(렉시컬 환경)과의 조합이다. 다른 말로 하자면, 클로저 기능은 내부 함수에서 외부 함수 스코프에 접근할 수 있게 하는 것이다. 자바스크립트에서 클로저는 함수가 생성될 때마다, 함수가 생성되는 시점에 생성된다. A closure is the combination of a function bundled together (enclose..