js

    [JS] ProtoType

    JavaScript는 흔히 프로토타입 기반 언어(prototype-based language)라 불립니다. 프로토 타입은 원래의 형태 또는 전형적인 예, 기초 또는 표준으로 무언가 제품을 만드는 과정에서 시험용으로 미리 만들어보는 물건을 의미합니다. 자바스크립트에서는 모든 객체들이 메소드와 속성들을 상속 받기 위한 템플릿으로써 프로토타입 객체(prototype object)를 가진다는 의미입니다. (상속) 프로토타입 객체도 또 다시 상위 프로토타입 객체로부터 메소드와 속성을 상속 받을 수도 있고 그 상위 프로토타입 객체도 마찬가지입니다. 이를 프로토타입 체인(prototype chain)이라 부르며 다른 객체에 정의된 메소드와 속성을 한 객체에서 사용할 수 있도록 하는 근간입니다. 정확히 말하자면 상속되..

    [JS] method 정리

    math method Method 설명 Math.ceil() 올림 Math.floor() 내림 x.toFixed(y) x의 수를 소숫점 y자리 까지 반올림 Math.pow(x, y) x y제곱 (x ** y) Math.round(x) 가장 가까운 정수 값을 반올림 Math.abs() 절대값 Math.max() 주어진 값 중에서 최댓값 Math.min() 주어진 값 중에서 최솟값 Math.sqrt(x) x에 루트를 씌웁니다. (음수면 NaN 반환) parseFloat() 실수반환, 처음숫자 뒤에만 있는 문자열 무시 parseInt() 정수반환, 처음숫자 뒤에만 있는 문자열 무시 String method Method 설명 str.length 길이 출력 str.indexOf(찾고자하는 값) 위치 출력 str...

    [알고리즘] 재귀함수

    재귀는 재귀 (원래의 자리로 되돌아가거나 되돌아옴) 어떻게 보면은 무한 반복문과 굉장히 비슷합니다. 살면서 재귀라는 말을 듣기 어려운거 같은데 쉽게 생각하면 반복문과 다를게 없습니다. 특히 무한 반복문 while이나 재귀함수나 탈출 조건을 if문으로 설정 해주어야 하는 것 처럼.. 항상 느끼는 거지만, 어렵게 생각하면 한없이 어려운 것 같습니다. 그렇기 때문에 많이 해보아야 해결 되는 문제인듯 합니다. 재귀를 사용할 때 1. 주어진 문제를 비슷한 구조의 더 작은 문제로 나눌 수 있는 경우 2. 중첩된 반복문이 많거나 반복문의 중첩 횟수(number of loops)를 예측하기 어려운 경우 ex) 펙토리얼 재귀함수 function fac(n){ if(n===1){ // 탈출 조건 return 1; } re..

    [JS] 고차함수

    이차방정식 마냥 이차함수라 하기는 이상하니까 고차함수라고 표현 한것 같습니다. 결국 함수안에 함수를 넣은 형태입니다. 스코프, 클로저와 비슷하게.. 자바스크립트에 특별한 대우를 받는 일급 객체(first-class citizen)가 있습니다. 대표적인 일급 객체 중 하나가 함수입니다. (자바스크립트가 나온 시점을 고려했을 때,) 자바스크립트에서 함수는 아래와 같이 특별하게 취급됩니다. 변수에 할당(assignment) 할 수 있다. 다른 함수의 인자(argument)로 전달될 수 있다. 다른 함수의 결과로서 리턴될 수 있다. 함수를 변수에 할당할 수 있기 때문에, 함수를 배열의 요소나 객체의 속성값으로 저장할 수 있습니다. 이는 함수를 데이터(string, number, boolean, array, ob..

    [JS] 스코프, 클로저

    스코프 : 배율로 볼수있는 범위가 다르듯이 8배로만 볼 수 있는 물체가 있으면 2배로는 볼 수 없다. 가까운 거리는 2배가 유리하지만 어쨋든 8배로는 볼 수 있다.. 클로저 : 변수 x, y 두개가 있다고 하면은, 함수안에 함수를 넣어서 x함수를 잠구고 y값을 원하는대로 컨트롤 가능하며, 함수 한번만 짜면은 컨트롤을 여러개 할 수 있다. 쉽게 생각하면 이런 느낌이었습니다. 이 때까지 코드를 짜오면서 좀 당연한 규칙(?)인듯한 느낌이었지만 구체적으로 몰랐기 때문에 이번 기회에 배우게 되었습니다. 1. 스코프 예제 1) let username = 'kimcoding'; if (username) { let message = `Hello, ${username}!`; console.log(message); // ..

    [JS] 객체

    배열과 객체의 가장 큰 차이점은 순서의 유무입니다. 배열은 요소에 0부터 순차적으로 접근할 수 있지만 객체는 속성에 순서대로 접근하지 않고, key를 통해서 value에 접근합니다. 1. 객체의 구조 key는 first, second를 지칭하는 값 value는 1, 2를 지칭하는 값 입니다. 이 둘을 구분 하는건 :(콜론)을 두어 구분합니다. 중괄호를 사용하고, key와 value 값이 2개 이상 늘어날 경우 , 로 구분을 해줍니다. let obj = { first: 1, second: 2 }; 2. 객체의 값 사용 및 추출 객체를 지정하거나 만들었으면 그 값을 사용 할 줄도 알아야 합니다. value 출력하는 2가지의 방법이 있습니다. 1. Dot notation obj.first; // '1' 2. ..

    [JS] 계산기 구현

    코드스테이츠에서 계산기 동작을 자바스크립트로 계산기를 구현 해 보았습니다. 우선 코드를 짜면서 느꼈던 점은 알고리즘적 사고가 굉장히 중요하다고 생각을 합니다. 비유를 하게 된다면, 컴퓨터랑 이야기를 한다고 생각을 할때 뭔가 조금은 덜 어지러운 느낌인 것 같습니다. 컴퓨터는 아주 똑똑한 3살 아이라고 생각을 하면 스트레스를 덜 받는거 같습니다. 하나하나 다 이야기 해줘야하고 코드를 읽을 때에도 항상 서순에 의해서 읽기 때문입니다. 지금 이 글을 쓰고 있을 때에는 코드스테이츠 시작한지 2주가 시작 하고나서, 항상 코드를 짜면서 느끼는 것은 왜 안되는 것에 대해 집착하기보다 지금 나온 결과에 대한 원인을 찾는 것이 더 중요하다는 것이 느껴졌습니다. 원인과 결과가 명확해지고 코드를 이해할 때에 원하고자 하는 방..

    [JS] 반복문

    1. for 구문 초기화(어디서부터 시작?), 조건식(어디까지 끝?), 증감문(반복하면서 증가는 얼만큼?) let sum = 1 for(let n =2; n

    [JS] 조건문, 문자열, Math

    1. 조건문 1. 비교연산자 조건문에는 반드시 비교 연산자가 필요합니다. 1) 아래는 조건식을 채우기 위한 비교연산자 입니다. > (초과 또는 미만) >= (이상 또는 이하) ===(같다) !==(같지 않다) && (and) || (or) ! (not) ex) ! undefined = true // ! 'hello' = false == 와 ===(동치연산자) 는 다르다. 같음을 나타내지만 ==는 명확하지 않기 때문에 ===을 주로 사용합니다. 2) 아래의 값을 조건문에 넣으면 if문에서 false로 변환되므로 if 구문이 실행 되지 않습니다. false, null, undefined, 0, NaN, ' ' (공백, 값이 없음) 3) 비교하는 연산자는 아니지만 증가 감소를 표현 할 수도 있습니다. += 1..

    [JS] 함수 선언, 할당

    1. 보관함, 데이터 설정 let a = 12; - let은 보관함 안의 데이터 할당을 수시로 가능 const b = 'kim'; - const은 데이터 할당시 변경 불가능 (보관함 선언) = (데이터 할당) let a = 12, b =kim let 선언을 한번만 하고 ','를 사용하여 let 중복사용을 막을 수 있다. 2. 자바스크립트 타입 개념과 종류 자바스크립트에는 타입 이라는 개념이 있습니다. 자바스크립트의 모든 값(value)는 각자 타입을 가지고 있습니다. JavaScript에서도 타입에 따라서 할 수 있는 일이 다릅니다. string(문자열), number(숫자열), boolean(참/거짓), undefinded(변수에 값이 없을 때 출력 값), 함수 모든게 타입 입니다. 반대로 typeof..