본문 바로가기
개발/Web

JavaScript 기본 문법 정리

by amkorousagi 2021. 2. 21.

JS
JS

 JavaScript는 웹에 상호작용을 더하게 해주는 요소이다.

 JavaScript(줄여서 JS)는 full-fledged dynamic programming language이다.

 즉 html, css를 쓰는 사람은 프로그래머라고 부를 수 없지만 JS를 쓴다면 프로그래머라고 할 수 있다!

 

 JS는 매우 간결(compact)하면서 반면에 유연(flexible)한 언어이다.

 따라서 많은 tool들이 core JavaScript language로 쓰이고, 이들은 최소한의 노력으로 많은 기능성(functionality)을 제공한다. 이에 다음의 이점들이 나타난다.

  •  web browser에 내장된 API(Application Programming Interface)로 동적인 HTML 페이지나 CSS 스타일을 만들어 낼 수 있다.
  • 타사 API를 사용해 사이트 내의 기능을 통합할 수 있다.
  • 제삼자의 framework나 library를 사용해 개발을 가속화할 수 있다.

 

JS의 core features

1. Variables(변수)

 변수는 값을 저장하는 상자(container)이다. var 또는 let, const로 선언할 수 있다.(var은 지금은 여러 문제로 쓰이지 않는다.)

 뭐가 다른지 알고 싶다면..

 

Storing the information you need — Variables - Learn web development | MDN

Storing the information you need — Variables Table of contentsTable of contents After reading the last couple of articles you should now know what JavaScript is, what it can do for you, how you use it alongside other web technologies, and what its main f

developer.mozilla.org

 변수는 선언(declaration)-초기화(initialization)-대입(Assignment)의 생애 주기(lifecycle)를 가진다.

let myVariable = 'Bob'; /* declaration, initialization */
myVariable = 'Steve'; // assignment

 

 Variable은 아무 data type의 Value(값)을 넣을 수 있다. 즉 variable의 datatype은 dynamic(유동적)이다.

 Data types :

  • String : 문자열, 값이 문자열임을 나타내려면 따옴표로 묶어라.
  • Number : 숫자, 따옴표로 묶지 마라.
  • Boolean : True(진실) 또는 False(거짓)의 값을 가진다. true와 false로 표현하며 따옴표로 묶지 마라.
  • Array : 단일 참조에 여러 값을 저장할 수 있는 구조(물).
  • Object : 무엇이든 될 수 있다. JS에서 모든 것은 객체이며 variable(변수)에 저장될 수 있다.
let myVariable = 'Bob'; // String
let myVariable = 10; // Number
let myVariable = true; // Boolean
let myVariable = [1,'Bob','Steve',10]; // Array
let myVariable = document.querySelector('h1'); // Object

 

 

2. Comment(주석)

 코드를 설명하는 글

/*
여러 줄에 걸쳐서
주석을 쓰려면
이렇게
*/
let myVariable;//한줄만 또는 코드 뒤에 쓰려면 이렇게

 

 

3. Operators(연산자)

 operator는 두 value 또는 variable를 토대로 하나의 결과(값)를 만들어 내는 수학적 기호(mathematical symbol)이다.

  • Addition(더하기) : +
    • 두 number 또는 string을 더한다.
  • Substraction(빼기), Multiplication(곱하기), Division(나누기) : - , * , /
    • 두 number을 빼고, 곱하고 나눈다(몫을 결과로)
  • Assignment(할당) : =
    • variable에 value를 할당(assignment)한다.
  • Equality : ===
    • 두 value가 같은지 보고 그에 따라 true/false를 반환한다.
  • Not, Does-not-equal :! ,!==
    • 값을 논리적으로 반대인 값으로 바꾼다(e.g. true->false)
    • 두 value가 같지 않은지 보고 그에 따라 true/false를 반환한다.
// +
6 + 9;
'Hello ' + 'world!';

// -, *, /
9 - 3;
8 * 2; // multiply in JS is an asterisk
9 / 3;

// =
let myVariable = 'Bob';

// ===
let myVariable = 3;
myVariable === 4;

// !, !==
let myVariable = 3;
!(myVariable === 3);

let myVariable = 3;
myVariable !== 3;

 

 

4. Conditionals(조건부)

let iceCream = 'chocolate';
if(iceCream === 'chocolate') {//iceCream이 chocolate일 경우 이 중괄호 안의 문 실행. else문 생략
  alert('Yay, I love chocolate ice cream!');
} else {//iceCream이 cholate가 아닐 경우 이 중괄호 안의 문이 실행 if문 생략
  alert('Awwww, but chocolate is my favorite...');
}

 if의 () 안의 조건의 true/false 에 따라  if문이나 else문 둘 중 하나를 실행.

 

5. Functions(함수)

 Function은 다시 쓰고 싶은 코드 블록의 기능을 pakaging(포장, 지칭)하는 하나의 방법이다.

 한 코드 블록을 function으로 정의하고 그 function name으로 call(호출) 시 그 코드 블록이 실행되도록 한다.

 똑같은 코드를 여러 번 쓰는 비효율성을 없애는 좋은 대안이다.

 이미 위에서도 여러 번 function을 사용했다.

let myVariable = document.querySelector('h1');
alert('hello!');

 위 두 함수 모두 browser 내장 함수이다.

 

 함수는 다음과 같이 정의할 수 있다.

function multiply(num1,num2) {
  let result = num1 * num2;
  return result;
}

 

 정의한 함수는 다음과 같이 호출(call)할 수 있다.

multiply(4, 7);
multiply(20, 20);
multiply(0.5, 3);

 

 함수 내에서 선언된 variable은 함수 내에서만 유효하다.

 자세한 내용은 variable scoping(변수 범위)를 참조하라.

 

Grammar and types - JavaScript | MDN

This chapter discusses JavaScript's basic grammar, variable declarations, data types and literals. JavaScript borrows most of its syntax from Java, C, and C++, but it has also been influenced by Awk, Perl, and Python. JavaScript is case-sensitive and uses

developer.mozilla.org

 

6. Events

 진정한 상호작용성을 web page에서 구현하려면 event handler가 필요하다.

 event handler는 웹 브라우저 내에서 특정 activity(행동)에 귀 기울이고 있으면서 반응이 오면 코드를 실행하는 코드 구조(code structure)이다. 마우스 클릭과 같은 것이 activity의 예이다. 마우스 클릭은 마우스 클릭에 대한 event handler를 fire(점화)시켜 해당 code를 실행하도록 한다.

document.querySelector('html').onclick = function() {
    alert('Ouch! Stop poking me!');
}

 

 

* 활용 예시

 image changer

let myImage = document.querySelector('img');

myImage.onclick = function() {
    let mySrc = myImage.getAttribute('src');
    if(mySrc === 'images/firefox-icon.png') {
      myImage.setAttribute('src','images/firefox2.png');
    } else {
      myImage.setAttribute('src','images/firefox-icon.png');
    }
}

 

 change user name

// in index.html
<button>Change user</button> 
//in main.js
let myButton = document.querySelector('button');
let myHeading = document.querySelector('h1');

function setUserName() {
  let myName = prompt('Please enter your name.');
  localStorage.setItem('name', myName);
  myHeading.textContent = 'Mozilla is cool, ' + myName;
}
if(!localStorage.getItem('name')) {
  setUserName();
} else {
  let storedName = localStorage.getItem('name');
  myHeading.textContent = 'Mozilla is cool, ' + storedName;
}
myButton.onclick = function() {
  setUserName();
}

 

 user name 이 null(없음, 무효)이라면

function setUserName() {
  let myName = prompt('Please enter your name.');
  if(!myName) {
    setUserName();
  } else {
    localStorage.setItem('name', myName);
    myHeading.textContent = `Mozilla is cool, ${myName}`;
  }
}

 

 전체 코드

 

mdn/beginner-html-site-scripted

A simple one page website created to help complete beginners learn HTML basics, which in this repo has also had some script added to help beginners learn JavaScript basics. The scripting is explain...

github.com

 

 참조한 사이트

 

JavaScript basics - Learn web development | MDN

JavaScript is a programming language that adds interactivity to your website. This happens in games, in the behavior of responses when buttons are pressed or with data entry on forms; with dynamic styling; with animation, etc. This article helps you get st

developer.mozilla.org

 

 

 물론, 여기서 말하지 못한 operator(%, &&, ||)이나 const, 화살표 함수 등 그 외 중요 문법이 있다. event handler의 동작원리라던가 컴퓨터 구조 같은 것도 말하지 못했다. 그러나 위 사이트는 충분히 기본 문법을 잘 설명하고 있다고 생각한다. 그 외의 자잘한 건, 예제를 하며 그때그때 검색하여 배워도 문제없을 것이다.

 

 또, 이후에 포스팅할 웹 개발 인트로를 보면 웹 구조에 대해 더 잘 이해할 수 있을 것이다.

'개발 > Web' 카테고리의 다른 글

DOM 은 무엇인가?  (0) 2021.02.28
웹팩과 바벨 개념과 역할  (0) 2021.02.28
웹개발 인트로 (개념, 구조, 공부방향)  (0) 2021.02.23
CSS 기본 문법 정리  (0) 2021.02.20
html 기본 문법 정리  (0) 2021.02.19

댓글