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);
}

var : 과거에 사용되던 변수 선언 방식으로, 현재는 잘 사용하지 않습니다.

결과 확인하기
100
200
javascript

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

데이터 변경은 변수에 저장된 값을 수정하는 과정을 의미합니다. 자바스크립트에서는 변수에 할당된 데이터를 언제든지 변경할 수 있습니다. 변수에 새로운 값을 할당하거나, 기존 값에 연산을 수행하여 변경할 수 있습니다.

{
    let x = 100;            //변수 x에 숫자 100을 저장
    let y = 200;            //변수 y에 숫자 200을 저장
    let z = "javascript";   //변수 z에 문자 javascript를 저장

    x = 300;          //변수 x의 값을 숫자 300으로 변경
    y = 400;          //변수 y의 값을 숫자 400으로 변경
    z = "jquery";     //변수 z의 값을 문자 jquery으로 변경

    console.log(x);
    console.log(y);
    console.log(z);
}

let : 현재 자주 쓰이는 변수 선언 방식으로, 변경이 가능하나, 재할당은 불가능합니다.

결과 확인하기
300
400
jquery

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

데이터 추가를 통해 유동적으로 데이터를 관리하고 확장할 수 있습니다. 이를 통해 프로그램은 다양한 데이터를 저장하고 조작할 수 있게 됩니다.

{
    let x = 100;                 //변수 x에 숫자 100을 저장
    let y = 200;                 //변수 y에 숫자 200을 저장
    let z = "javascript";           //변수 z에 문자 javascript를 저장

    x += 100;            // x = x + 100;
    y += 100;            // y = y + 100;
    z += "jquery";       // z = z + "jquery";

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

04. 상수 : 데이터 저장 + 변경(x)

자바스크립트(JavaScript)에서 상수는 데이터를 저장하고 변경하고, 추가할 수 없습니다.

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

    x = 300;    //TypeEroor: Assignment to constant variable.

    console.log(x);
    console.log(y);
    console.log(z);
}

const : 상수로써, 덮어씌우기(const x = 300), 재할당(x = 300), 추가(x += 300)가 불가능합니다.
x가 상수(constant)로 선언되어 있기 때문에 오류가 발생합니다.

결과 확인하기
100
200
javascript

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

배열은 자바스크립트에서 여러 개의 값을 순차적으로 저장하는 자료구조입니다. 배열 선언은 자바스크립트에서 여러 개의 값을 하나의 변수에 저장하기 위한 방법입니다. 배열은 여러 개의 요소(element)를 순차적으로 저장하며, 각 요소는 인덱스(index)를 통해 접근할 수 있습니다.

{
    const arr = new Array();

    arr[0] = 100;
    arr[1] = 200;
    arr[2] = "javascript";

    console.log(arr[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
javascript

07. 배열 : 데이터 저장(여러개) : 표현방법3 : [](리터럴) 방식으로 배열 선언

리터럴 방식으로 배열을 선언하는 것은 코드의 가독성을 높이고 초기화를 간편하게 수행하기 위한 방법입니다. 배열을 리터럴 방식으로 선언하면 코드 작성이 간결해집니다.

{
    const arr = [];

    arr[0] = 100;
    arr[1] = 200;
    arr[2] = "javascript";

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

08. 배열 : 데이터 저장(여러개) : 표현방법4 : [](리터럴) 방식으로 배열 선언과 동시에 초기값 설정

리터럴 방식으로 배열을 선언하고 동시에 초기값을 설정하는 방법은 배열의 내용을 직접 선언할 때 주로 사용되며, 가독성 향상, 간결한 코드, 코드 유지 보수 간편, 간편한 데이터 정의 등의 이점이 있습니다.

{
    const arr = [100, 200, "javascript"];

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

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

2차 배열은 배열의 배열로 구성된 데이터 구조를 나타냅니다. 각 배열 내에 또 다른 배열이 포함된 것으로, 행렬 연산이나 다차원 데이터를 다룰 때 유용합니다.

{
    const arr = [100, [200, 300], ["javascript", "jqeury"]]

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

10. 배열 : 데이터 저장(여러개) : 표현방법6 : 배열 구조 분해 할당

배열 구조 분해 할당은 배열의 각 요소를 분해하여 여러 개의 변수에 할당하는 기능입니다. 이를 통해 배열의 요소를 편리하게 추출하고 변수에 할당할 수 있습니다. 배열 구조 분해 할당은 ES6 (ECMAScript 2015)에서 도입된 기능으로, 코드를 간결하게 작성하고 가독성을 향상시키는 데 도움을 줍니다.

{
    const arr = [100, 200, "javascript"];

    const [a, b, c] = arr;

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

11. 배열 : 데이터 저장(여러개) : 표현방법7 : 배열 펼침연산자

배열 펼침 연산자 (Spread Operator)는 배열의 요소를 개별적인 값으로 분해하여 다른 배열이나 함수 호출과 같은 곳에서 사용할 수 있게 해주는 기능입니다. 이 연산자는 ... 기호를 사용하여 표현하며, 주로 배열을 복사하거나 다른 배열에 요소를 추가하거나 함수에 인수로 전달할 때 사용됩니다.

{
    const arr1 = [100, 200, "javascript"];
    const arr2 = [300, 400, "jaquery"];
    const arr3 = [...arr1, 500];

    console.log(arr1); 
    console.log(...arr1);
    console.log(...arr1, ...arr2);
    console.log(...arr3);
}
결과 확인하기
100, 200, javascript
100 200 javascrpt
100 200 javascript 300 400 jquery
100 200 javascript 500

12. 객체 : 데이터 저장(키(속성)와 값(매서드)) : 표현방법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]);
}

const obj = new Object();는 새로운 빈 객체를 생성하는 방법 중 하나입니다. 이것은 객체를 생성하고 초기화할 때 사용되며, 기본적으로 빈 객체를 만들기 위한 방법입니다.

결과 확인하기
100
200
javascript

13. 객체 : 데이터 저장(키(속성)와 값(매서드)) : 표현방법2 : 객체 선언 후 객체방식으로 데이터 입력

객체 선언 후 객체 방식으로 데이터를 입력하면 객체를 생성함과 동시에 속성을 정의할 수 있습니다. 초기 데이터를 동적으로 입력하거나 여러 단계에 걸쳐 입력해야 할 때 유용합니다.

{
    const obj = new Object();

    obj.a = 100;
    obj.b = 200;
    obj.c = "javascript";

    console.log(obj.a);
    console.log(obj.b);
    console.log(obj.c);
}

. : {}는 객체를 생성하고 초기화하는 데 사용되고, . (점)은 객체의 속성에 접근하거나 조작하는 데 사용됩니다.

결과 확인하기
100
200
javascript

14. 객체 : 데이터 저장(키(속성)와 값(매서드)) : 표현방법3 : {}(리터럴) 방식으로 객체 선언

객체를 먼저 선언한 다음, 속성과 값을 하나씩 입력하는 방식으로, 초기 데이터를 동적으로 입력하거나 여러 단계에 걸쳐 입력해야 할 때 유용합니다. 선언 후에도 객체에 속성을 추가하거나 값이 변경될 수 있습니다.

{
    const obj = {}

    obj.a = 100,
    obj.b = 200,
    obj.c = "javascript"

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

15. 객체 : 데이터 저장(키(속성)와 값(매서드)) : 표현방법4 : {}(리터럴) 방식으로 객체 선언과 동시에 초기값 설정

객체를 선언하고 동시에 초기 데이터를 입력하는 방식으로, 객체의 속성과 값이 한 줄에 모두 나열되므로 가독성이 높고 코드가 간결해집니다. 초기 데이터가 고정되어 있거나 작성 시점에 알려진 경우에 유용합니다.

{
    const obj = {
        a: 100,
        b: 200,
        c: "javascript";
    }
    console.log(obj.a);
    console.log(obj.b);
    console.log(obj.c);
}

객체는 이름-값 쌍을 포함하는 자료구조로, 중괄호 {} 내에 속성(key)과 그에 대응하는 값(value)을 정의하여 표현합니다.

결과 확인하기
100
200
javascript

16. 객체 : 데이터 저장(키(속성)와 값(매서드)) : 표현방법5 : 배열안에 객체가 있는 방식

배열 안에 객체가 있는 방식은 자바스크립트에서 배열의 각 요소로 객체를 포함시키는 것을 말합니다. 이를 통해 배열 내부에 여러 종류의 데이터를 함께 저장하고 관리할 수 있습니다.

{
    const obj = [
        {
            a: 100,
            b: 200,
            c: "javascript",
        },
        {
            a: 300,
            b: 400,
            c: "jquery",
        }
    ]
    console.log(obj[0].a)
    console.log(obj[0].b)
    console.log(obj[0].c)
    console.log(obj[1].a)
    console.log(obj[1].b)
    console.log(obj[1].c)
}
결과 확인하기
100
200
javascript
300
400
jquery

17. 객체 : 데이터 저장(키(속성)와 값(매서드)) : 표현방법6 : 객체안에 배열이 있는 방식

객체 안에 배열이 있는 방식은 자바스크립트에서 객체 내부에 배열을 속성으로 포함시키는 것을 의미합니다. 이렇게 하면 객체 내부에서 배열을 사용하여 여러 개의 데이터를 관리하거나 그룹화할 수 있습니다. 이 패턴은 데이터를 조직화하고 중첩된 정보를 표현하는 데 유용합니다.

{
    const obj2 = {
        a: 100,
        b: {x: 200, y:[300, 400]},
        c: "javascript",
    }
    console.log(obj2.a);
    console.log(obj2.b.x);
    console.log(obj2.b.y[0]);
    console.log(obj2.b.y[1]);
    console.log(obj2.c);
}
결과 확인하기
100
200
300
400
javascript

18. 객체 : 데이터 저장(키(속성)와 값(매서드)) : 표현방법7 : 객체안에 객체가 있는 방식

객체 안에 객체가 있는 방식은 자바스크립트에서 객체 내부에 다른 객체를 속성으로 포함시키는 것을 의미합니다. 이렇게 하면 객체를 중첩하여 복잡한 데이터 구조를 만들거나 관리할 수 있습니다. 중첩된 객체를 사용함으로써 데이터를 계층화하고 보다 정교한 구조를 구현할 수 있습니다.

{
    const obj2 = {
        a: 100,
        b: {x: 200, y: {d: 300, e: { f:400, g: 500}}},
        c: "javascript",
    }
    console.log(obj2.a);
    console.log(obj2.b.x);
    console.log(obj2.b.y.d);
    console.log(obj2.b.y.e.f);
    console.log(obj2.b.y.e.g);
    console.log(obj2.c);
}
결과 확인하기
100
200
300
400
500
javascript

19. 객체 : 데이터 저장(키(속성)와 값(매서드)) : 표현방법8 : 객체 + 함수가 있는 방식

객체 obj를 생성하고 객체 내에 숫자, 배열, 객체, 문자열, 함수 등 다양한 데이터 유형과 메서드를 함께 사용하는 방식입니다.

{
    const obj = {
        a: 100,
        b: [200, 300],
        c: {x: 400, y:500},
        d: "javascript",
        e: function(){ 
            console.log("javascript")},
        f: function(){
            console.log(obj.d)
            },
        g: function(){ 
            console.log(this.d) 
            },
    }
    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);
    obj.e();
    obj.f();
    obj.g();
}

this : 자기 자신 표현을 표현합니다.
메서드(Method): 객체 내에 정의된 함수를 말합니다. 객체가 데이터와 해당 데이터를 조작하는 동작을 함께 포함할 수 있도록 해주는 요소입니다. 메서드는 객체 지향 프로그래밍의 중요한 개념 중 하나이며, 객체의 행동을 표현하고 객체 간의 상호 작용을 가능하게 합니다.

결과 확인하기
100
200
300
400
500
javascript
javascript
javascript
javascript

20. 객체 : 데이터 저장(키(속성)와 값(매서드)) : 표현방법9 : 객체 구조 분해 할당

객체 구조 분해 할당(Object Destructuring Assignment)은 객체의 속성을 추출하여 변수로 분해하는 기능입니다. 이를 통해 객체 내의 데이터를 빠르게 가져올 수 있습니다. 객체의 각 속성은 해당 속성 이름과 동일한 변수 이름으로 할당됩니다. 리엑트에서 자주 쓰입니다.

{
    const obj = {
        a: 100,
        b: {x: 200, y:300},
        c: "javascript",
    }
    const {a, b: {x, y}, c} = obj;

    console.log(a);
    console.log(x);
    console.log(y);
    console.log(c);
}
결과 확인하기
100
200
300
javascript

21. 객체 : 데이터 저장(키(속성)와 값(매서드)) : 표현방법10 : 객체 펼침연산자

객체 펼침 연산자(Object Spread Operator)는 객체의 속성들을 새로운 객체로 펼쳐주는 기능입니다. 이를 사용하여 객체를 복사하거나 새로운 속성을 추가하거나 기존 속성을 덮어쓸 수 있습니다. 객체 펼침 연산자는 ... 기호를 사용하여 표현하며, 주로 객체를 조작하고 복제하는 데 사용됩니다. 11번의 배열 펼침연산자와는 다르게 {} 안의 a, b, c를 한 번에 출력하지 못합니다.

{
    const obj1 = { a: 100, b: 200, c: "javascript"};
    const obj2 = { ...obj1, d: "jquery"};
    const obj3 = { ...obj1, ...obj2}

    console.log(obj2.a);    
    console.log(obj2.b);
    console.log(obj2.c);
    console.log(obj2.d);
    console.log(obj3);
}
결과 확인하기
100
200
javascript
jquery
{a: 100, b: 200, c: 'javascript', d: 'jquery'}

22. 파일 : 데이터 교환(JSON)

JSON(JavaScript Object Notation)은 데이터를 표현하고 교환하기 위한 경량의 데이터 형식입니다. JSON은 텍스트로 구성되며, 사람이 읽고 쓰기 쉽고, 기계가 해석하고 생성하기도 쉽습니다. 주로 웹 애플리케이션과 서버 간 데이터 교환 형식으로 사용됩니다.

{
    // JSON 데이터를 객체로 변환
    const jsonSrting = '{"name": "webs", "age": "30"}';
    const jsonObject = JSON.parse(jsonSrting);
    console.log(jsonObject.name);
    
    // 객체를 json 데이터로 변환
    const person = {name: "webs", age: 30};
    const jsonPerson = JSON.stringify(person);
    console.log(jsonPerson);
}

JSON.parse(jsonString): 이 함수는 JSON 형식의 문자열(jsonString)을 JavaScript 객체로 변환합니다. JSON 문자열은 이중 따옴표로 묶인 키-값 쌍을 포함하며, 객체의 속성 및 값을 정의합니다. 이 함수를 사용하여 JSON 문자열을 객체로 변환하고 객체 속성에 접근할 수 있습니다.
JSON.stringify(obj): 이 메서드는 JavaScript 객체(obj)를 JSON 형식의 문자열로 변환합니다. 객체를 JSON 문자열로 변환하면 데이터를 전송하거나 저장하기 용이하며, 이 문자열을 나중에 다시 JSON 객체로 파싱할 수 있습니다.

결과 확인하기
webs
{"name":"webs","age":30}

++ 지역변수 / 전역변수 ++

지역변수 (Local Variables) : 지역변수는 특정 함수나 코드 블록 내에서 선언된 변수로, 해당 함수 또는 코드 블록 내에서만 유효합니다. 함수 내에서 선언한 변수나 매개변수는 그 함수 내에서만 접근할 수 있으며, 외부에서는 사용할 수 없습니다.
전역변수 (Global Variables) : 전역변수는 코드 어디에서든 접근 가능한 변수로, 함수나 코드 블록 외부에서 선언된 변수를 말합니다. 전역변수는 프로그램의 어느 곳에서나 접근 가능하지만, 오랜 기간 동안 유지되며 코드 관리 측면에서 주의가 필요합니다.

{
    let x = 100;             
    let y = 200;
    let z = "javascript";       //세 개의 전역변수를 선언하고 초기값을 할당합니다.

    console.log("함수밖1:" + x, y, z); 

    function func(){
        let x = 300;        //지역변수
        y += 400;           //전역변수 y의 값에 400을 추가
        z = "jquery";       //전역변수 z의 값에 문자열 "jquery"를 추가

        console.log("함수안:" + x, y, z);
    }
    func();

    console.log("함수밖2:" + x, y, z);
}

함수 내에서 선언된 지역변수 x는 함수 내에서만 유효하며, 함수 내에서 변경된 전역변수 y와 z는 함수 외부에서도 변경된 값을 유지합니다.

결과 확인하기
함수밖1:100 200 javascript
함수안:300 600 jquery
함수밖2:100 600 jquery

++ 연산자 - 산술 ++

산술 연산자는 숫자 값들 사이에서 다양한 산술적 계산을 수행하는 데 사용됩니다. 주요 산술 연산자에는 덧셈, 뺄셈, 곱셈, 나눗셈 등이 있습니다.

{
    let a = 6;
    let b = 3;

    let sum = a + b;          //덧셈 연산자(+)

    let difference = a - b;   //뺄셈 연산자(-)

    let product = a * b;      //곱셈 연산자(*)

    let quotient = a / b;     //나눗셈 연산자(*)

    let remainder = a % b;    //나머지 연산자(%)
}
결과 확인하기
9
3
18
2
0
산술 연산자의 종류와 기본형
종류 기본형 설명
덧셈 연산자 let sum = a + b; 2222
뺄셈 연산자 let difference = a - b; 3333
곱셈 연산자 let product = a * b; 4444
나눗셈 연산자 let quotient = a / b; 4444
나머지 연산자 let remainder = a % b; 4444

++ 연산자 - 대입 ++

대입 연산자는 변수에 값을 할당하는 역할을 합니다. 대입 연산자는 등호(=)를 사용하여 표현하며, 변수에 값을 할당할 때 사용합니다.

{
    let x = 10;         // 변수 x에 10을 할당
    let y = 5;          // 변수 y에 5을 할당
    
    x = y;              // 변수 x에 변수 y의 값(5)을 할당
    console.log(x);
}
결과 확인하기
5

++ 연산자 - 증강 ++

증강 연산자(Increment Operators)는 변수의 값을 1씩 증가시키는 역할을 합니다. 주로 반복문이나 변수의 값에 1을 더할 때 사용됩니다. 대부분의 프로그래밍 시나리오에서 변수를 증가시키는 경우가 더 흔하기 때문에 감소연산자보다 자주 사용됩니다.

{
    let count = 5;    // 변수 count에 5를 할당

    count++;          // count를 1 증가시킴 (증강 연산자)
    console.log(count);
    
    count--;          // count를 1 감소시킴 (감소 연산자)
    console.log(count);
}

감소 연산자 : 증강 연산자보다는 덜 사용되지만, 역순으로 배열을 순회하거나, 역순으로 인덱스를 활용해 작업을 수행하는 경우에 감소 연산자가 유용할 수 있습니다.

결과 확인하기
6
4

++ 연산자 - 비교 ++

비교 연산자는 값들을 비교하여 참(true) 또는 거짓(false)을 반환하는 연산자입니다. 다양한 비교 연산자가 있으며, 주로 조건문과 논리 연산에서 활용됩니다.

{
    {
        let x = 5;
        let y = "5";

        console.log(x == y);    // 값만 비교함
        console.log(x === y);   // 값, 타입 비교함
    }

    {
        let x = 5;
        let y = 10;
        console.log(x != y);         // 값 비교
    }

    {
    let x = 5;
    let y = "5";
    console.log(x !== y);        // 값, 타입 비교
    }

    {
    let x = 10;
    let y = 5;
    console.log(x > y);
    console.log(x < y);
    console.log(x >= y); 
    console.log(x <= y); 
    }
}

동등(==) 연산자: 두 값이 같은지 비교합니다.
일치(===) 연산자 : 값과 타입이 모두 같은지 비교합니다.
부등(!=) 연산자 : 두 값이 다른지 비교합니다.
불일치(!==) 연산자 : 값과 타입이 모두 다른지 비교합니다.
크다(>) 연산자와 작다(<) 연산자 : 값의 크기를 비교합니다.
크거나 같다(>=) 연산자와 작거나 같다(<=) 연산자 : 값의 크기를 비교하며 등호를 포함합니다.

결과 확인하기
true
false
true
true
true
false
true
false

++ 연산자 - 논리 ++

논리 연산자는 논리적인 조건을 결합하거나 부정하는 데 사용되는 연산자입니다. 주로 조건문과 논리적인 상황에서 조건을 만들 때 활용됩니다.

{
    {
        let x = 5;
        let y = 10;
        if (x > 0 && y > 0) {                   //두 조건이 모두 참일 때만
            console.log("A");
        } else {
            console.log("B");
        }
    }

    {
        let x = 5;
        let y = 10;
        if (x > 0 || y > 0) {                   //두 조건 중 하나라도 참
            console.log("A");
        } else {
            console.log("B");
        }
    }

    {
        let x = 5;
        if (!(x > 0)) {                     //조건{(x > 0) = 참}을 반대로 뒤집음 = {(x > 0) = 거짓}
            console.log("A");
        } else {
            console.log("B");
        }
    }
}

논리곱(&&) 연산자: 두 조건이 모두 참일 때만 결과가 참이 됩니다.
논리합(||) 연산자: 두 조건 중 하나라도 참이면 결과가 참이 됩니다.
논리부정(!) 연산자 : 조건이 참이면 거짓으로, 조건이 거짓이면 참으로 변경합니다. 이것은 조건문 등에서 특정 조건이 만족되지 않을 때 코드 블록을 실행하고 싶을 때 유용하게 사용됩니다.

결과 확인하기
A
A
B

++ 연산자 - 비트 ++

비트 연산자는 컴퓨터에서 숫자를 이진수로 표현하고 조작하는 데 사용되는 연산자입니다. 이진수는 0과 1로 구성된 숫자 체계로, 컴퓨터의 내부 동작에 매우 중요합니다. 비트 연산자는 이진수를 조작하는 데 사용되며, 주로 비트 단위의 논리 연산이나 시프트 작업에 쓰입니다. 주로 저수준 프로그래밍이나 비트 조작에 활용되며, 일반적인 상황에서는 잘 사용되지 않을 수 있습니다.

{
    5(0101) & 3(0011) = ?   // 두 비트가 모두 1일 때만 결과비트 1

    5(0101) | 3(0011) = ?   // 두 비트 중 하나라도 1이면 결과비트 1

    5(0101) ^ 3(0011) = ?   // 두 비트가 서로 다르면 결과비트 1
    ~5(0101) = ?            // 비트를 반전시킴
}

비트 AND(&) 연산자 : 비트 단위로 AND 연산을 수행합니다. 두 비트가 모두 1일 때만 결과 비트가 1이 됩니다.
비트 OR(|) 연산자 : 비트 단위로 OR 연산을 수행합니다. 두 비트 중 하나라도 1이면 결과 비트가 1이 됩니다.
비트 XOR(^) 연산자 : 비트 단위로 XOR 연산을 수행합니다. 두 비트가 서로 다를 때 결과 비트가 1이 됩니다.
비트 NOT(~) 연산자 : 비트를 반전시킵니다. 0은 1로, 1은 0으로 변환됩니다.

결과 확인하기
1(0001)
7(0111)
6(0110)
10(1010)

++ 자료형 ++

자료형의 종류에는 숫자/문자열/논리/null/undefined/Object/Array/Function 등이 있습니다.

{
    let temperature = 30.5;             //숫자(Number) 자료형

    let address = '123 Main Street';     //문자열(String) 자료형

    let isSunny = false;            //논리(Boolean) 자료형

    let emptyValue = null;          //null 자료형

    let notDefined;              //undefined 자료형

    let person = {               //객체(Object) 자료형

        firstName: "John",
        lastName: "Doe",
        age: 30,
        isStudent: false
    };

    let numbers = [1, 2, 3, 4, 5];      //배열(Array) 자료형

    function greet(name){              //함수(Function) 자료형
        console.log(`Hello, ${name}!`);
    }
}
 

null : null은 변수에 값이 없음을 나타내는 특별한 값입니다. 의도적으로 값이 없다는 것을 나타내기 위해 사용되며, 객체를 나타내는데 사용될 수도 있습니다.
undefined : undefined는 변수가 선언되었지만 값이 할당되지 않았을 때 자동으로 할당되는 값입니다. 함수에서 반환하지 않은 경우나 변수에 값을 할당하지 않은 경우 등에 자주 나타납니다.