필기노트/노마드코더

노마드코더/바닐라JS로 크롬 앱 만들기/1. Basic Javascript

COSMOSUNION 2022. 7. 24. 01:16

노마드코더 - 바닐라JS로 크롬 앱 만들기 https://nomadcoders.co/javascript-for-beginners/lobby

 

바닐라 JS로 크롬 앱 만들기 – 노마드 코더 Nomad Coders

Javascript For Beginners

nomadcoders.co

 

 

 


Introduction

 

 

Roadmap

HTML, CSS > Javascript > (Framework) React Native > Electron

    ■ React Native : 안드로이드/ios 앱 개발

    ■ Electron : 데스크탑 앱 개발

    ■ Socket.io : 채팅을 포함한 실시간 기능 포함 가능

    ■ ml5.js : 머신러닝 모델 생성하는 웹 사이트를 구축 -> 훈련가능

 

 

How to load Javascript in HTML

브라우저에서 css/js 파일을 직접 여는 것은 '파일을 단순히 보는(look) 행위'

브라우저가 html을 열고, html을 통해 css와 js 를 불러오는 것은 '파일을 실행(execute)시키는 행위'

 

1. Internal Javascript

어떤 js를 실행시키고 싶은지에 따라, <head> 또는 <body> 내에 <script>코드 입력

 

2. External Javascript

: HTML과 분리하여 외부에서 생성한 자바스크립트 파일 로드

정상 작동하는지 확인 : 검사 > 콘솔(consonle) 

console.log() : 괄호 안에 있는 값을 콘솔에 log. (=기록하여 보여줌)

 

 

 


Basic Javascript

 

 

Variables

: 변수(Variable); 값을 저장하거나 유지하는 역할 

    - 변수이름에 공백 불가

    - 가독성을 위해 (공백없이) 두번째 단어의 첫 알파벳은 대문자로

개발 언어 Javascript Python
변수 네이밍 방법 veryLongVariableName
(camel-case)
very_long_variable_name
(snake-case)

 

- 변수 선언(변수 생성)

    "always const, sometimes let, never var"

    키워드(const/let/var)로 선언되지 않은 변수(x=2)는 오류 발생 → should be like 'const x = 2'

키워드 const let var
특징 변수가 생성된 후에는
변수값 변경 불가능

"블록 스코프 읽기 전용 상수"
변수 생성 후에도
변수값 변경 가능

"블록 스코프 지역 변수"
const/let 구분 없는 변수 생성

"전역/지역 변수 모두 선언 가능"
(비추천)
 Importatnt 

예1.
constant는 변경이 불가능한 변수값을 표현하지만,
아래 예제의 경우 변수(variable)가 아닌 객체(Object)의 속성값이므로 이므로 변경사항 업데이트 가능
예2.
constant 전체를 하나의 값으로서 업데이트하는 것이기 때문에 에러 발생

 

- let으로 변수를 선언(생성)한 후, 변수값 변경시 let을 제외한 변수이름만 입력

 

 

Data type

: 데이터형(Data type) 

데이터 종류 정의
string 문자열
number 숫자
boolean true / false
null 아무것도 없는 상태의 값
(자연적으로 생성되지 않고
null값을 직접 입력해서 생성 가능)
undefined 어떠한 값으로도 정의되지 않음을 의미
(예: 정의되었던 변수값 없이 함수 실행)
bigint 큰 정수를 다루는 숫자형
(int: 4바이트/bigint: 8바이트)
symbol 유일한 식별자(unique identifier)를
만들고 싶을때 사용
object 객체 (값을 위한 컨테이너)

 * Bigint 상세 설명 : https://ko.javascript.info/bigint

 

- 문자열을 숫자로 변환하는 방법

parseInt(value1, value2) : 문자열(string)을 정수(integer)로 변환
                                            value1 : 변환하려는 값 / value2 : 진법(Radix)
                                            예1. parseInt('101', 2); // 5
                                            예2. parseInt("Cosmos"); // NaN     

parseFloat(value) : 문자열(string)을 부동소수점 실수(float)로 변환

 

 

Array

: 배열(array); 가장 기초적이고 필수적인 데이터구조 (예: 파이썬의 list)

- 대괄호([]), 콤마(,)로 표현

array.length : 배열에 존재하는 인수의 갯수를 나타내는 property
         * 후행(trailing)쉼표 : array의 마지막 인수 미입력(예: let myCats = ["a", "b", "c", ])시 오류 발생
array.push : 배열의 마지막에 인수를 추가하는 property

- 배열의 마지막에 속성(new key : new value)을 추가하는 방법 : 직접 선언

 

 

Object

: 객체(object); 값을 저장하는 컨테이너

- 중괄호({}), 콤마(,)로 표현

 

■ 속성(property) :

- key와 value값으로 구성 / 속성값이 함수(function)일 경우 메소드(method)

- key : 문자형과 심볼형만 사용 가능 / 띄어쓰기가 포함된 문자열의 경우 따옴표 사용

- 외부에서 배열의 속성 접근시 마침표(.) 이용

property accessors (속성 접근자) : 
object.property;  // value

object["property"];  // value

 

 

Function

: 함수(function); 반복해서 사용할 수 있는 코드 조각

- (관례상) 첫글자 대문자로 시작;

 

■ 매개변수(parameter) : 함수 선언에서 정의된 변수

■ 인자(argument) : 함수가 호출될 때, 매개변수의 인풋으로 들어온 실제 데이터 값

■ new 연산자 : 생성자 함수와 함께 사용하여 유사한 객체 생성 가능

■ this :

1. 함수 내에서 지역객체(local object)를 호출

* 함수 내에서 정의된 객체는 함수 내에서만 사용 가능 (예. functionObject)

 

2. 함수 내에서도 전역객체(global object) 생성 가능 → this를 이용하여 함수 내에서만 작동하는 지역객체 생성 가능 

- 객체와 함수 생성 과정 비교 : 

  const / let / var function
코드 예제

 

 

Return

: return 명령문은 함수 실행을 종료하고, 주어진 값을 호출 지점으로 반환; 함수를 중간에 중단도 가능

  

- data를 console.log로 단순히 표시하는 것이 아니라, 웹 페이지 내에서 data를 얻어서

  그 data로 무언가를 하기 위해 return 사용;

- function 안에서 무언가를 return(반환)하면, 누군가 function을 실행할 때 return 값으로 대체된다.

  → function이 function의 밖과 소통하는 방법;

- return을 하면 function은 작동을 멈추고 결과 값을 return

 

 

Conditionals - if...else

if...else 조건문 : 지정한 조건의 값이 참/거짓인지에 따라 각자 다른 명령문(statement)를 실행 가능

- else if절을 통해 다중의 if...else문을 중첩 가능

 

prompt(message, defaultValue) : 사용자에게 메세지가 담긴 알림창을 띄울때, 값을 받는 입력창도 함께 출력
- 첫번째 매개변수(message) : 입력창에 표시될 메세지
- 두번째 매개변수(defaultValue) : 입력할 부분에 표시될 기본값
- javascript는 값이 입력되기 전까지 웹페이지를 일시정지
- (단점) CSS 적용 불가능 / 팝업 제한된 브라우저에서는 출력 불가능
input output
isNaN() : 객체가 NaN(Not a Number)인지 boolean 값을 반환
               예. 값이 숫자가 아닐 경우(=NaN), true / 값이 숫자일 경우, false

 

 

Operator

1. 이항 산술 연산자

이항 산술 연산자 의미
+ 덧셈
- 뺄셈
* 곱셈
/ 나눗셈
% 나머지

 연산자는 피연산자 중 하나 이상이 문자열인 경우, '문자열 연결 연산자'로 동작

 

2. 할당 연산자

할당 연산자 의미
x = y x = y
x += y x = x + y
x -= y x = x - y
x *= y x = x * y
x /= y x = x / y
x %= y x = x % y (나머지)

* 연쇄 할당 (Chained assignment)

 

3. 일치 비교 연산자

일치 비교 연산자 의미
x === y x와 y의 값과 type이 같음
x !== y x와 y의 값과 type이 다름

 

4. 논리 연산자

논리 연산자 의미
|| 논리 합(or)
&& 논리 곱(and)

 

5. 삼항 조건 연산자

: 조건식의 평가 결과에 따라 반환할 값을 결정

조건식 ? 조건식이 true일때 반환할 값 : 조건식이 false일때 반환할 값

 

6. typeof 연산자

: 자신의 뒤에 위치한 피연산자의 데이터타입을 문자열로 반환

- 종류 : 7가지 문자열 (string, number, boolean, undefined, symbol, object, function)

            * null은 'object' 문자열을 반환

 

 

 

 

 

 

 

 

출처 :
1. 노마드코더 / 바닐라JS로 크롬 앱 만들기 https://nomadcoders.co/javascript-for-beginners/lobby
2. MDN / 문법과 자료형 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Grammar_and_types
3. ZeroCho Blog / javascript : https://www.zerocho.com/category/JavaScript
4. 웹 프로그래밍 튜토리얼, Poiemaweb : https://poiemaweb.com/js-operator