[JS] level0 점의 위치 구하기 - 삼항연산자, 구조분해할당 https://school.programmers.co.kr/learn/courses/30/lessons/120841 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 - 점의 위치를 입력 받아 몇 사분면인지 출력한다. 해결 점의 위치 ( x,y) - 제 1사분면 : x>= 0 , y>=0 - 제 2사분면 : x=0 - 제 3사분면 : x=0 ? 1 : 4; return dot[1] >= 0 ? 2 : 3 } if(dot[0] >= 0) return dot[1] >=0 ? 1 : 4; - dot[0]은 x 값을 나타낸다. - x 값이 0 이상이면 - do.. [10장] 객체 리터럴 📂10장 객체 리터럴 객체란? 자바스크립트를 구성하는 거의 "모든 것"은 객체 원시 값(변경 불가능)을 제외한 나머지 값은 객체 객체 값은 다양한 타입의 값을 하나의 단위로 구성한 복합적인 자료구조이며 변경 가능한 값임 const 객체 = { 프로퍼티 키 : 프로퍼티 값} 프로퍼티는 키와 값으로 구성 자바스크립트에선 사용할 수 있는 모든 값은 프로퍼티 값임. 프로퍼티엔 함수도 포함 => 자세한 설명은 11장 프로퍼티 값이 함수인 경우 이를 메서드 라고 불림 const counter = { num : 0, increase : function() { this.num++; } } 객체는 프로퍼티와 메서드로 구성된 집단체 프로퍼티 : 객체의 상태를 나타내는 값 num : 0 메서드 : 프로퍼티(상태 데이터)를 .. [9장] 단축평가 - 옵셔녈 체이닝 연산자와 null 병합 연산자 📂9장 타입 변환과 단축 평가 옵셔널 체이닝 연산자 .? : 좌항이 null,undefined인 경우 undefined를 반환하고, 그렇지 않으면 우항의 프로퍼티 참조를 이어감. let user = {}; // 주소 정보가 없는 사용자 alert( user ?. user.address); // undefined, 에러가 발생하지 않습니다. alert( user ?. user.address.street); // undefined // 만약 address가 필수값이 아닐때, user.address.street는 에러가 발생함. alert(user.address?.street) // 그럴경우 이 코드처럼 사용함. 선언이 완료된 변수가 좌항에 있어야함. ?.를 계속 연결해서 체인을 만들면 중첩 프로퍼티들에 안전.. [9장] 단축 평가 - 논리 연산자를 사용한 단축 평가 📂9장 타입 변환과 단축 평가 단축 평가 단축 평가 : 표현식을 평가하는 도중에 평가 결과가 확정된 경우 나머지 평가 과정을 생략하는 것. 논리 연산자를 사용한 단축 평가 규칙 true || anyting => true false || anyting => anything true && anyting => anything false && anyting => false 설명 true || anyting => true || 논리합 연산자의 1개의 피연산자만 true여도 true를 반환함. 좌항이 true임으로 우항을 볼 필요없이 true false || anyting => anything 좌항이 false임으로 우항값 반환 true && anyting => anything && 논리합 연산자는 2개의 피연산자.. [9장] 타입 변환 📂9장 타입 변환 타입 변환 코드를 예측하기 위해 타입 변환이 어떻게 동작하는지 정확히 이해하고 사용해야함. 오류를 생산할 가능성을 줄일 수 있음. 타입변환 이란? var x = 10; var str = x + ''; console.log(typeof str,str) // string 10 console.log(typeof x,x) // number 10 기존 원시 값(x)이 직접 변경되는 것이 아님. 원시 값은 변경 불가능한 값이므로 변경X 기존 원시 값을 사용해 다른 타입의 새로운 원시 값을 생성하는 것임 => 타입 변환 암묵적 타입 변환 암묵적 타입 변환, 타입 강제 변환 개발자의 의도와는 상관없이 표현식 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환 💻 자바스크립트 엔진 동.. [CleanCode] 삼항연산자를 어떻게 다룰까? 함수 매개변수로 if문,for문,swich문을 받을 수 있을까? 없다 . 그 이유는? 값이 들어가야지 식이 들어가면 안된다. 그럼 삼항연산자는 들어가도 되낭? 된다. 그 이유는? 조건문이 있으나 값으로 귀결하기 때문에 삼항연산자 다루기. 숏코딩보다 일관성이 더 중요하다. -3개의 피연산자를 취해 아래의 형식으로 나타낸다. 조건 ? 참 : 거짓 case2 - ?과 참,거짓을 기준으로 indent나누고 괄호 활용하기 const example = condition1 ? ((a === 0) ? 'zero' : 'positive') : 'negative' case3 - null일때 const welcomeMessage = (isLogin) => { const name = isLogin ? getName() : '.. [CleanCode] else을 왜 지양할까? else if 피하기 const NUMBER = 5; if(NUMBER >= 0){ console.log("0보다 크거나 같다.") // "0보다 크거나 같다." } else if( NUMBER > 0){ consoel.log("0보다 크다.") } 콘솔창엔 "0보다 크거나 같다." 이 출력된다. 왜냐하면 else if는 else 한 후 다시 if 조건문을 만들기 때문이다. const NUMBER = 5; if(NUMBER >= 0){ console.log("0보다 크거나 같다.") } else { if( NUMBER > 0){ consoel.log("0보다 크다.") } } else if문은 사실 위 코드처럼 실행되고 있다. 그래서 NUMBER는 0보다 크거나 같기도 하고 0보다 크기도 하므로 두 가지.. 8장 제어문 📂8장 제어문 조건에 따라 코드 블록을 실행(조건문)하거나 반복 실행(반복문)할 때 사용. 코드의 실행 흐름을 인위적으로 제어할 수 있음. forEach, map, filter, reduce같은 고차 함수를 사용한 함수형 프로그래밍 기법에선 제어문의 사용을 억제하여 복잡성을 해결하기 위해 사용 블록문 0개 이상의 문을 중괄호로 묶은 것 코드 블록 또는 블록이라고도 함 하나의 실행 단위로 취급 블록문 끝에는 세미콜론을 붙이지 않음. why? 세미콜론은 문의 종료를 의미하는 자체 종결성을 갖기 때문 // 블록문 { var foo = 10; } // 블록문 끝엔 세미콜론x //제어문 { var x = 1; if(x 9장 암묵적 타입 변환 참고. if(조건문) { // 조건문이 true일때 이 부분에 적힌 코드.. 데이터 타입 검사 ( 원시타입과 객체타입에 따른) typeOf primitive와 reference의 차이 자바스크립트는 동적인 타입임으로 타입 검사가 어렵다. 잘 찾아서 검사를 하자. primitive console.log(typeof '문자열') //string console.log(typeof true) //boolean console.log(typeof 123) //number console.log(typeof Symbol()) //symbol typeOf로 잘 검사가 됨. reference function myFun() {} class MyClass{} const str = new String('문자열') console.log(typeof(myFun)) //function console.log(typeof(MyClass)) //function .. 6장 데이터 타입 📂6장 데이터 타입⏳👩💻💻 모든 값은 데이터 타입을 가짐. ES6에선 7개의 데이터 타입을 제공, 원시 타입과 객체 타입으로 나뉨 데이터 타입의 필요성 데이터 타입에 의한 메모리 공간의 확보와 참조 변수에 할당되는 값의 데이터 타입에 따라 확보해야 할 메모리 공간의 크기가 결정됨. var score = 100 💻 자바스크립트엔진 저장할때 리터럴 100을 숫자 타입의 값으로 해석 숫자 타입은 8바이트로 설명하기 때문에 8바이트의 메모리 공간 확보 100을 2진수로 변환 후 저장. 💻 자바스크립트엔진 참조할때 score 변수를 숫자 타입으로 인식 숫자 타입은 8바이트 단위로 저장 score 변수를 참조하면 8바이트 단위로 메모리 공간에 저장된 값(2진수)을 숫자타입으로 읽음. 데이터 타입에 의한 값의 해석.. 5장 표현식과 문 📂5장 표현식과 문 값 : 식이 평가되어 생성된 결과 값의 특징 모든 값은 데이터 타입을 가짐. 메모리에 비트(2진수)의 나열로 저장. 저장된 값은 데이터 타입에 따라 다르게 해석될 가능성 있음. 예) 0100 0001를 숫자로 해석하면 65, 문자로 해석하면 'A' 변수에 할당되는 것은 값임. var sum = 10 + 20 ; //30 10 + 20(식)이 평가되어 값 30을 생성함. 변수 sum이 기억하는 메모리 공간에 저장되는 것은 값(30)임. 10+20이 아님. 🔎 용어 정리 평가 : 식을 해석해서 값을 생성 하거나 참조 하는일 참조 : 변수에 저장된 값을 읽어 들이는 것 값 생성 방법 - 리터럴 : 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법 💻 자바스크립트 엔진 : 런타임에 리터럴.. 4장 변수 📂4장 변수 변수? 변수의 정의 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 그 메모리 공간을 식별하기 위해 붙인 이름 🔎 용어 정리 할당(대입, 저장) : 변수에 값을 저장하는 것 참조 : 변수에 저장된 값을 읽어 들이는 것 변수의 필요성 기억하고 싶은 값을 메모리에 저장하고, 저장된 값을 읽어 들여 재사용하기 위해 변수 사용 식별자 식별자 : 메모리 상에 존재하는 어떤 값을 식별할 수 있는 이름 식별자는 메모리 주소를 기억 (값을 기억하는 것이 아님.) 변수 선언 var age; // 변수 선언 💻 var 키워드 변수 선언시 자바스크립트 엔진이 하는 일 선언 : 변수 이름 등록해서 자바스크립트 엔진에 변수의 존재를 알림. 초기화 : 값을 저장하기 위한 메모리 공간 확보, 암묵적으로 undefi.. 이전 1 2 3 4 다음