01. 변수 : 데이터 저장

변수는 데이터를 담는 그릇입니다.

{
    var x = 100;             //변수 x에 숫자 100을 저장함
    var y = "200";           //변수 y에 문자 200을 저장함
    var z = "javascript";    //변수 z에 문자 "javascript"를 저장함
    
    console.log(x);
    console.log(y);
    console.log(z);
}   
결과 확인하기
100
200
javascrip

02. 변수 : 데이터 저장 + 데이터 변경

변수는 데이터를 저장 할수도 있지만 변경도 가능하다.

{
    let x = 100;    
    let y = 200;
    let z = "javascript";

    x = 300;            //변수를 중간에 변경해도 정상 작동됩니다.
    y = 500;
    z = "react";

    console.log(x);
    console.log(y);
    console.log(z);
}
결과 확인하기
300
500
react

03. 변수 : 데이터 저장 + 데이터 변경 + 데이터추가

변수는 데이터를 저장 할수도 있지만 변경도 가능하다.

{
    let x = 100;
    let y = 200;
    let z = "javascript";
    
    x += 300;        // x = x + 300 
    y += 400;        // y = y + 400 
    z += "react";
    
    console.log(x);
    console.log(y);
    console.log(z);
}
결과 확인하기
400
600
javascripreact

연산자 : 변수로 연산이 가능하다.

변수를 이용해서 연산이 가능하고, 연산에는 산술 연산자, 대입 연산자, 비교 연산자, 논리 연산자, 비트 연산자, 삼항 연산자가 있습니다.

04. 상수 : 데이터 저장 + 데이터 변경X

상수는 데이터 저장이 가능하지만 변경은 불가능하다.

{
    const x = 100;
    const y = 200;
    const z = "javascript";
    
    x = 300;        //const(상수)는 변경이 불가능합니다.
    y = 400;
    z = "react";               
    
    console.log(x);
    console.log(y);
    console.log(z);
}
결과 확인하기
Uncaught TypeError: Assignment to constant variable.
(에러. 결과값이 안뜸)

05. 배열 : 데이터 저장(여러개): 표현방법1

배열은 데이터 저장을 여러개 할 수 있다.

{
    const arr = new Array();    
    arr[0] = 100;              //배열 값을 따로 저장해줍니다.
    arr[1] = 200;
    arr[2] = "javascript";

    console.log(arr[0]);       //배열 [0]첫번째 값을 불러옵니다.
    console.log(arr[1]);
    console.log(arr[2]);
}
결과 확인하기
100
200
"javascript"

06. 배열 : 데이터 저장(여러개): 표현방법2

배열은 데이터 저장을 여러개 할 수 있다.
배열안에 요소를 적어 불필요한 코드를 줄일 수 있다.

{
    const arr = new Array(100, 200, "javascript");  //배열코드안에 직접 여러개의 값을 저장합니다.

    console.log(arr[0]);    
    console.log(arr[1]);
    console.log(arr[2]);
}
결과 확인하기
100
200
javascrip

07. 배열 : 데이터 저장(여러개): 표현방법3

배열은 데이터 저장을 여러개 할 수 있다.
특정 변수 선언코드를 생략해 코드를 줄일 수 있다.

{
    const arr = [ ];        //특정 선언코드를 생략했습니다.
    arr[0] = 100;
    arr[1] = 200;
    arr[2] = "javascrip";

    console.log(arr[0]);
    console.log(arr[1]);
    console.log(arr[2]);
}
결과 확인하기
100
200
javascrip

08. 배열 : 데이터 저장(여러개): 표현방법4

배열은 데이터 저장을 여러개 할 수 있다.
특정 변수 선언코드를 생략하고 배열안에 요소를 적어 코드를 줄일 수 있다.

{
    const arr = [100, 200, "javascrip"];   //특정 선언코드를 생략하고 배열 안에 직접 값을 여러개 저장합니다.

    console.log(arr[0]);
    console.log(arr[1]);
    console.log(arr[2]);
}
결과 확인하기
100
200
javascrip

09. 객체 : 데이터 저장(키와 값) : 표현방법1

객체는 키와 값에 데이터 저장을 할 수 있다.

{
    const obj = new Object();       //객체 키와 값을 따로 저장해줍니다.
    obj[0] = 100;
    obj[1] = 200;
    obj[2] = "javascript";

    console.log(obj[0]);
    console.log(obj[1]);
    console.log(obj[2]);
}
결과 확인하기
100
200
javascrip

10. 객체 : 데이터 저장(키와 값) : 표현방법2

객체는 키와 값에 데이터 저장을 할 수 있다.
객체선언, 배열선언을 다 할 수 있다.

{
    const obj = new Object();       
    obj.a = 100;                //객체 변수에 변수명을 직접 선언해서 저장할 수 있습니다.
    obj.b = 200;
    obj.c = "javascrip";

    console.log(obj.a);
    console.log(obj.b);
    console.log(obj.c);
}
결과 확인하기
100
200
javascrip

11. 객체 : 데이터 저장(키와 값) : 표현방법3

객체는 키와 값에 데이터 저장을 할 수 있다.
특정 변수 선언코드를 생략해 코드를 줄일 수 있다.

{
    const obj = { };        //특정 선언코드를 생략
    obj.a = 100;
    obj.b = 200;
    obj.c = "javascrip";

    console.log(obj.a);
    console.log(obj.b);
    console.log(obj.c);
}
결과 확인하기
100
200
javascrip

12. 객체 : 데이터 저장(키와 값) : 표현방법4

객체는 키와 값에 데이터 저장을 할 수 있다.

{
    const obj = {a:100, b:200, c:"javascript"};        //객체 안에 키와 값을 한번에 적을수 있습니다.
    obj.a = 100;
    obj.b = 200;
    obj.c = "javascrip";

    console.log(obj.a);
    console.log(obj.b);
    console.log(obj.c);
}
결과 확인하기
100
200
javascrip

13. 객체 : 데이터 저장(키와 값) : 표현방법5

객체는 키와 값에 데이터 저장을 할 수 있다.
배열안에 객체를 넣어 값을 불러올 수 있다.

{
    const obj = [           //[ ] 안에 여러 배열,객체값을 넣을 수 있습니다.
        {a:100, b:200},         //obj[0] 줄입니다.
        {c:"javascript"}        //obj[1] 줄입니다. 
    ];

    console.log(obj[0].a);  //[배열].(객체) 를 사용하여 값을 출력합니다.
    console.log(obj[0].b);
    console.log(obj[1].c);
}
결과 확인하기
100
200
javascrip

14. 객체 : 데이터 저장(키와 값) : 표현방법6

객체는 키와 값에 데이터 저장을 할 수 있다.
객체 안에 배열을 넣어 값을 불러올 수 있다.

{
    const obj = {
        a: 100,                 //다음 배열값을 넣을때 쉼표를 붙여줍니다.
        b: [200, 300],          
        c: {x: 400, y: 500},
        d: "javascript"
    };

    console.log(obj.a);     
    console.log(obj.b[0]);  //(객체).변수명[배열] 을 사용하여 값을 출력합니다.
    console.log(obj.b[1]);
    console.log(obj.c.x);   //객체안에 저장된 객체값도 불러올 수 있습니다.
    console.log(obj.c.y);
    console.log(obj.d);
}
결과 확인하기
100
200
300
400
500
javascrip

15. 객체 : 데이터 저장(키와 값) : 표현방법7

객체는 키와 값에 데이터 저장을 할 수 있다.
객체안 키값에 변수를 저장한다.

{
    const a = 100;
    const b = 200;
    const c = "javascript";

    const obj = {a, b, c};  //위 상수값을 객체에 넣는 작업입니다.

    console.log(a);
    console.log(b);
    console.log(c);
    
    // console.log(obj.a);   ( ) 안에 obj. 를 붙여도 정상작동됩니다.
    // console.log(obj.b);
    // console.log(obj.c);
}
결과 확인하기
100
200
javascrip

16. 객체 : 데이터 저장(키와 값) : 표현방법8

객체는 키와 값에 데이터 저장을 할 수 있다.
객체 안에 함수를 넣을 수 있다.

{
    const obj = {
        a: 100,
        b: [200, 300],
        c: "javascript",
        d: function(){          //function는 함수입니다.
            console.log("javascript가 실행되었습니다.")
            }
    };
    console.log(obj.a);
    console.log(obj.b[0]);
    console.log(obj.b[1]);
    console.log(obj.b[2]);  //b배열의 2번은 존재하지않아 undefined 가 뜹니다.
    console.log(obj.c);
    console.log(obj.d);     //(X) 문자열 그대로 나옵니다.
    obj.d( );                    //함수 실행문은 이렇게 출력합니다.
}
결과 확인하기
100
200
300
undefined
javascrip
f ( ) {
console.log("javascript가 실행되었습니다.");
}
javascrip가 실행되었습니다.

함수 : 하나의 특별한 작업을 수행하도록 설계된 독립적인 블록입니다.

함수는 프로그램에서 반복적으로 사용되는 기능을 만들어 내기 위한 코드들의 집합으로 이해하시면 됩니다.

식별자

자바스크립트에서 식별자(identifier)는 변수, 함수, 객체의 속성 등의 이름으로 사용되는 단어입니다.

{
    1. 식별자는 반드시 글자(a-z, A-Z), 숫자(0-9), 밑줄(_), 혹은 달러 기호($)로 시작해야 합니다.
    2. 식별자는 예약어(reserved keyword)로 사용되는 단어를 사용해서는 안됩니다. 예약어는 자바스크립트에서 특별한 의미를 가지는 단어로, 변수나 함수의 이름 등으로 사용될 수 없습니다.
    3. 식별자는 대소문자를 구분합니다. 예를 들어, "myVar"와 "myvar"은 서로 다른 식별자입니다.
    4. 식별자는 유니코드 문자도 포함할 수 있습니다.
}
//예시
// 유효한 식별자
    var myVariable;
    var my_function_name;
    var $myObject;
    var _myObject;
    var π = 3.14;

// 유효하지 않은 식별자
    var 123myVariable; // 숫자로 시작해서는 안됨
    var my-variable; // 하이픈(-)을 사용해서는 안됨
    var if = 10; // 예약어를 사용해서는 안됨

예약자

자바스크립트에서는 이미 정의된 의미를 가진 특별한 단어들이 있습니다. 이러한 단어를 예약어(reserved keyword)라고 합니다.

{
    아래는 JavaScript에서 사용되는 예약어의 전체 목록입니다.

    abstract, await, boolean, break, byte, case, catch, char, class, const, continue,
    debugger, default, delete, do, double, else, enum, export, extends, false, final, 
    finally, float, for, function, goto, if, implements, import, in, instanceof, int, 
    interface, let, long, native, new, null, package, private, protected, public, return, 
    short, static, super, switch, synchronized, this, throw, throws, transient, true, try,
    typeof, var, void, volatile, while, with, yield
}

++ 연산자(전치,후치) 예시 4개

++result(전치): = 보다 우선순위가 높습니다. 따라서 ++result를 먼저 연산 후 결과값을 저장합니다.
result++(후치): = 보다 우선순위가 낮습니다. 따라서 결과값이 먼저 연산된 후 result++ 이 연산됩니다.

{
    //예시 1번.
    let hap, j, k, l;
    j = k = l = 1;
    hap = ++j + k++ + ++l;

    console.log(hap); //2+1+2 등호보다 전치가 우선순위 입니다.
    console.log(j); //2 결과값은 전치,후치 적용이 됩니다.
    console.log(k); //2
    console.log(l); //2
    
    //예시 2번.
    let a = 1, b = 2, c = 3, result;
    result = ++a + b++ + ++c;

    console.log(result); //2+2+4=8
    console.log(a);     //2
    console.log(b);     //3
    console.log(c);     //4

    //예시 3번.
    let x = 7, y = 7, result;

    result = x > y ? ++x : y--;

    console.log(result);    //y = 7, 후치이므로 뺀 값이 적용이 안됐습니다.
    console.log(x);     //7
    console.log(y);     //6

    //예시 4번.
    let a, b, c, result;
    a=20, b=30, c=40;

    result = a < b ? b++ : --c;

    console.log(result);    //b=30
    console.log(a);         //20    
    console.log(b + c);     //31+40 =71
    console.log(c);         //40
}

++ 형변환, typeof

자바스크립트는 동적 타입 언어(dynamic typing)로 데이터 타입을 미리 선언하지 않아도 런타임에 자동으로 타입을 유추합니다.
자바스크립트에서는 형변환이 자주 일어나며, 형변환은 값의 타입을 다른 타입으로 변환하는 것을 말합니다.
typeof 연산자는 주어진 값의 타입을 문자열로 반환합니다.

{
    //암시적 형변환
    let num = 10;
    let str = "20";
    let result = num + str; // "1020"

    //명시적 형변환
    let str = "123";
    let num = Number(str); // 123
    let bool = Boolean(str); // true


    //typeof
    console.log(typeof 123); // "number"
    console.log(typeof "hello"); // "string"
    console.log(typeof true); // "boolean"
    console.log(typeof undefined); // "undefined"
    console.log(typeof null); // "object"
    console.log(typeof []); // "object"
    console.log(typeof {}); // "object"
    console.log(typeof function() {}); // "function"
}

++ 비트연산자

비트 연산자는 이진수에 대한 연산을 수행하는 연산자입니다.
이진수는 0과 1로 이루어진 숫자 체계이며, 이진수 연산은 0과 1 비트 단위로 수행됩니다.

{
    //1. 비트 AND(&) 연산자 예시:
    0b1010 & 0b1100 = 0b1000    
    //0b는 이진수임을 나타냅니다.  
    //두 비트가 모두 1일 경우에만 결과값이 1이 됩니다.

    //2. 비트 OR(|) 연산자 예시:
    0b1010 | 0b1100 = 0b1110
    // | 연산자는 두 비트 중 하나 이상이 1이면 결과값이 1이 됩니다.

    //3. 비트 XOR(^) 연산자 예시:
    0b1010 ^ 0b1100 = 0b0110
    // ^ 연산자는 두 비트 중 하나만 1일 경우에 결과값이 1이 됩니다.

    //4. 비트 NOT(~) 연산자 예시:
    ~0b1010 = 0b0101
    // ~ 연산자는 비트 값을 반전시킵니다.

    //5. 비트 왼쪽 시프트(<<) 연산자 예시:
    0b1010 << 2 = 0b101000
    //<< 연산자는 이진수를 왼쪽으로 이동시키며, 오른쪽에는 0이 추가됩니다.
    //왼쪽으로 2번 시프트한 결과입니다.

    //6. 비트 오른쪽 시프트(>>) 연산자 예시:
    0b1010 >> 1 = 0b0101
    // >> 연산자는 이진수를 오른쪽으로 이동시키며, 왼쪽에는 0이 추가됩니다.
}