[JavaScript] Variables, Types, Function, Conditionals

Steve·2021년 4월 6일
0

웹개발 코스

목록 보기
1/59
post-thumbnail

변수 (Variable)

let word; // 변수 선언 (Declaration)
word = 'Branden'; // word 에 string 할당 (Assignment)
let word = 'Brenden'; // 선언과 할당 동시 가능

let cheese; 
console.log(cheese); // undefined(할당된 값 없음)

표현식 (Expression)

표현식이란 하나의 값으로 표현되는 코드를 의미한다.

// s = d / t
let speed, distance = 10, time = 2;
speed = distance / time; // 표현식

함수 (Function)

함수 선언

// a, b = parameter(매개변수)
// 함수호출시 실제로 들어가는 값 = argument(인자)

// 선언식
function add(a, b) {return a + b;}
add(1, 10); // 11

// 함수 표현식 (변수에 할당)
let add = function (a, b) {return a + b;}
add(1, 10); // 11 (함수 호출)

// 화살표 함수 (ES6)
let add = (a, b) => a + b;

함수의 return

function noReturn() {console.log('Hello');}
let result = noReturn(); // undefined;
//  return 값이 없으면 undefined 를 return 한다.

타입 (Types)

  • 숫자 (number)
  • 문자 (string)
  • Boolean (true, false)

JavaScript 에서의 연산

10 + '10' // "1010"
10 - '10' // 0 (*, /, % 연산도 arithmatic 연산을 함)
'string' + 10 // "string10"
'string' - 10 // NaN (*, /, % 연산도 결과가 같다)
'string' + '10' // "string10"
'string' - 10 // NaN (*, /, % 연산도 결과가 같다)

conversion

// convert to number
Number('99'); // 99
// convert to string
String(99); // '99'

조건문 (Conditionals)

비교 연산자 (Comparison Operator)

  • < > <= >= === !===
  • ==, != 는 type 을 엄격하게 비교하지 않는다. (C++ 같은경우 타입이 다르면 비교자체가 불가하다.) JS Equality Table

논리 연산자 (Logical Operator)

// AND &&
// OR ||
// NOT ! : 값을 반전시킨다.
!undefined // true
!'Hello' // false

truthy, falsy 값의 의미

  • Boolean 타입은 아니지만, 존재 여부를 따지는 것. (값의 비트가 모두 0 이거나, 혹은 메모리에 값이 입력되지 않아 쓰레기 값이 들어있는 경우...?)
  • false, null, undefined, 0, NaN, '' 는 falsy 값이다.

논리 연산자의 결과에 Boolean 이 아닌 값이 들어갈 수 있다.

// OR 연산자는 truthy 한 값을 만나면 그 값을 출력한다.
// 둘다 falsy 할 경우 뒤에 있는 값을 출력
undefined || 10 // 10
5 || console.log('a') // 5 (평가순서는 왼쪽부터)
undefined || false // false;

// AND 연산자는 falsy 한 값을 만나면 그 값을 출력
// 둘다 truthy 할 경우, 뒤에 있는 값을 출력
undefined && 10 // undefined
5 && false // false
5 && 10 // true

첫 시간 느낀점

  • 기초 개념은 CodeCademy 의 콘텐츠가 더 나은것 같다는 느낌이 들었다. (내가 처음 배우는 입장이었다면 이걸 보고 잘 따라올 수 있었을까? 하는 생각이 듦.)
  • Pair Programming 을 하면서 상대방과 계속 이야기를 해야 하기 때문에 뭔가 집중이 더 안되는 느낌을 받았다. 처음이라 익숙하지 않아서 그럴수도 있다. 어쨌든 혼자 공부하고 고민하는 시간은 반드시 필요하다.
  • 단 1 bit 의 메모리 침범조차 허용하지 않는 C++ 을 하다가 JavaScript를 공부하니 언어가 Strict 하지 않고 뭔가 허술한(?) 느낌마저 들었다. 이 언어는 메모리를 전혀 신경쓰지 않아도 된다. 이게 저수준과 고수준의 차이...? 그래서 생산성이 높은건가...?
  • 화살표 함수... 생산성을 높이기 위해 만든 것 같은데 생략을 너무 많이 해서 오히려 가독성이 떨어지는 느낌이다. 그리고 문법도 헷깔린다. 굳이 arrow function 을 써야할 이유를 지금 당장은 못찾겠다.
  • 이거 정리하는데 시간이 매우 오래 걸렸다. 시간을 줄이면서도 효율적으로 하고 싶다.

앞으로

  • 블로그 플랫폼을 결정하는 데에 많은 시간을 투자했다. 이제 velog를 찾았으니 공부에 매진할 수 있을 것 같다.
  • PBS CS 강의를 하루에 한강은 수강하고, 주말에는 3강씩은 수강하고 싶은 희망이 있다. 이거 들으니까 확실히 좋다.
  • Notion 을 "생산성 도구"로 활용하고 싶다. 생산성 도구라는 말이 조금 fancy하게 들리긴 한다. 근데 새로운걸 시도하려니 귀찮기도 하고 시간도 많이 잡아먹을것 같다. 주말에 건드려 보는 것도 방법이다.
profile
게임과 프론트엔드에 관심이 많습니다.

0개의 댓글