목록JavaScript (50)
dolog
원시 타입 : 값 그대로 저장과 할당, 복사가 가능 객체 타입 : 객체가 저장되어 있는 메모리 주소 인 객체에 대한 참조값(by reference)이 저장 ex) let user = { name: “John” } 객체는 메모리 내 어딘가에 저장되고 변수 user엔 객체를 참조할 수 있는 값이 저장 ➡️ 객체가 할당된 변수를 복사할 땐 객체의 참조값이 복사 ex) let user = { name : “John” }; let admin = user; // 참조값을 복사 admin.name = “Pete”; console.log(user.name); 변수는 두개지만 각 변수엔 동일 객체에 대한 참조 값이 저장 따라서 객체에 접근하거나 객체를 조작할 땐 여러 변수를 사용할 수 있습니다 참조에 의한 비교 == 와..
프로퍼티 이름의 제약사항 변수 이름엔 for, let, return 사용 X ex) let let; (X) 그러나 객체 프로퍼티엔 제약이 없다 ex) let obj = { for: 1, let: 2, return: 3 }; 또한 문자열 또는 심볼형에 속하지 않은 값은 문자열로 변환된다 ex) let obj = { 0: “test” // “0”: “test” 와 동일하다 }; 하지만 역사적인 이유 때문에 특별 대우를 받는 이름이 있다 ➡️ __proto__ ex) let obj = {}; obj.__proto__ = 5; // 원시값 5가 무시된다 console.log(obj.__proto__); // 값은 객체가 된다 이후에 프로토타입(프로토타입 상속, 매서드와 __proto__가 없는 객체) 관련해서 ..
원시형 타입(primitive type) : 오직 하나의 데이터만 담을 수 있는 자료형 number, string, boolean… 객체형은 원시형과 달리 다양한 데이터 - 키로 구분된 데이터 집합, 복잡한 개체 - 를 담을 수 있다 ⭐️객체를 잘 이해하고 있어야 한다 객체 리터럴 문법 ⬇️ let object = { key 1 : value 1, // 프로퍼티(property) key 2 : value 2, key 3 : value 3, … } // 객체 선언 시 가장 많이 쓰는 문법 객체 생성자 문법 ⬇️ let data = new Object(); key(문자형만 들어올 수 있다): value(모든 자료형이 허용) 로 이루어진 프로퍼티(property)를 여러개 넣을 수 있다 복잡한 서랍장 안에 이..

*polyfill : 웹 개발에서 기능을 지원하지 않는 웹 브라우저 상의 기능을 구현하는 코드 쉽게 말해서 구식 브라우저에서 업데이트된 코드를 사용할 수 있게 해주는 것 자바스크립트는 정기적으로 등록, 분석하여 가치가 있다고 판단되는 제안 - 새로운 문법 또는 기존에 없던 내장 함수의 정의 - 은 https://tc39.github.io/ecma262/ 에 추가되므로 정기적으로 들어가 파악해보자(혹은 소개해주는 유튜브 참고…) 명세서(specification)에 등록된다 바벨(Babel) #필수 왜 사용하는 가? 명세서에 등록된 지 얼마 안된 기능을 사용해 작성한 코드를 특정 엔진에서 지원하지 않을 수도 있다 ➡️ 명세서 내 모든 기능을 모든 엔진이 구현하고 있지 않기 때문 이럴 때 바벨을 사용하는 것은..

테스트는 왜 해야 하는가? 코드를 수동으로 재실행 하면서 테스트를 하면 무언가를 놓치기 쉽다 함수 하나를 만들어 매개변수 1 값을 넣었을 땐 잘 돌아가지만 2를 넣었을 땐 실행이 되지 않는다 그래서 2 값이 들어 갔을 때 실행이 되게끔 수정을 했을 때 이때 1 값을 넣어도 실행이 똑같이 제대로 되는지 까지 생각해봐야 한다 테스트 자동화 테스트 코드가 실제 동작에 관여하는 코드와 별개로 작성되었을 때 가능 테스트 코드를 이용하면 함수를 다양한 조건에서 실행 실행 결과와 기대 결과를 비교할 수 있다 Behavior Driven Development(BDD 방법론) 테스트(test), 문서(documentation), 예시(example)를 모아놓은 개념 거듭제곱 함수와 명세서 function pow(x, n..
코드 짧게 쓰기 코드를 짧게 작성하는 것은 곧 일을 잘하는 비결이다 글자 하나만 사용하기 for 반복문에서 i 대신 x 또는 y 변수를 사용한다 반복문을 길게 작성하는 것 약어 사용하기 ex) list - let string - str userAgent - ua browser - brsr … 포괄적인 명사 사용하기 무언가를 명명할 때 obj, at a, value, item, elem 같이 다양한 개념을 포괄할 수 있는 명사를 사용하라 변수의 의미는 파악이 쉽지 않다 ex) data - 가장 이상적인 변수명 value or data1, item2, elem5 str, num - 자료형과 연관된 변수명 사용 … 철자가 유사한 단어 사용하기 date - data 처럼 주의깊게 봐야하며 모든 곳에 이런 조합을..
한 줄 주석 : // 여러 줄 주석 : /* … */ 주석을 사용하는 이유? 어떻게 코드가 동작하는지, 왜 코드가 동작하는지 설명하기 위해 코드 유지보수를 위해 좋지 않은 주석 설명이 담긴 주석이 많은 코드 ➡️ 주석 없이 코드만으로도 이해가 되어야 함 주석을 꼭 작성해야 하는 코드 ➡️ 코드를 다시 작성해야 할지도 모른다 리팩토링 팁 : 함수 분리하기 함수 내 코드 일부를 새로운 함수로 function showPrimes(n) { nextPrime: for (let i = 2 ; i < n ; i++) { for (let j = 2 ; j < i ; j++) { if (i % j == 0) continue nextPrime; } console.log(i); } } ⬇️ function showPrime..
개발자는 간결하고 읽기 쉽게, 파악하기 쉽게 코드를 작성하는 것이 관건이다 (=복잡한 문제를 간결하고 읽기 쉬운 코드로 해결) 문법 function pow(x, n) { let result = 1; for (let i = 0 ; i < n ; i++) { result *= x; } return result; } let x = prompt(“x?”, “”); let n = prompt(“n?”, ””); if (n < 0) { alert(`power ${n} is not supported, please enter a non-negative integer number`); } else { alert( pow(x, n) ) } *function pow(x, n) : x의 n제곱을 반환해주는 함수(n은 1 이상..