용어 
자바스크립트(JavaScript) VS 모던 자바스크립트(modern JavaScript) 

자바스크립트 
기존에 사용하던 웹 브라우저에서 실행되는 간단한 인터랙션 기능을 사용하게 한다. 

모던 자바스크립트 
모던 자바스크립트는 ES6(2015년) 버전 이후에 등장한 최신 버전에 자바스크립트를 이야기 합니다. 
기존의 자바 스크립트에 비해 많은 기능을 추가하고 개선

 

내장 객체(built-in object)

사용자 정의 객체 (스스로 생성)

 

내장 객체(built-in object)

  • 미리 정의 되어 있는 객체
  • 문서 객체 모델(DOM) 문서 뿐만 아니라 웹 문서안에 포함된 이미지, 링크, 텍스트, 필드 등 모두 객체로 관리 됩니다.

브라우저 객체 모델(BOM): 웹 브라우저에 정보를 객체로 관리

문서 객체 모델(DOM)과 브라우저 객체 모델(BOM)은 모두 자바스크립트에서 사용할 수 있는 미리 정의된
내장 객체(built-in object) 중의 하나 입니다.

DOM은 HTML, XML 등의 웹 문서의 내용과 구조를 객체로 관리하는 반면에 BOM은 
웹 브라우저의 창, 화면, URL 등과 같은 브라우저 정보를 객체로 관리합니다

DOM과 BOM은 각각의 역할이 다르며, 자바스크립트로 웹 페이지를 다양하게 조작하기 위해 
둘 다 사용되어야 합니다.
<script>
    // 사용자 정의 객체 
    // 관례상 객체를 대문자 표기해 준다. 
    function Person(name, age, gender) {
        this.name = name; 
        this.age = age; 
        this.gender = gender;
    }
    
    const personKim = new Person('킴', 30, 'male');
    console.log(personKim);
    console.log(personKim.name);
</script>
<script>
    // 일반 함수에 형태 
    function calc(n1, n2) {
        return n1 + n2; 
    }
    // 사용하는 모양 
    let result = calc(200, 200);
    console.log(result);
</script>
<script>
    // 모던 자바 스크립트 객체 프로토 타입 
    class Student {
        constructor(name) {
            this.name = name;
        }
        sayHi() {
            alert(this.name);
        }     
    }
    // 사용하는 모습 
    let student = new Student("John");
    student.sayHi();
</script>

'JS' 카테고리의 다른 글

문서 객체 모델  (0) 2023.05.04
배열  (0) 2023.05.04
마우스 클릭 이벤트 활용  (0) 2023.05.04
이벤트  (0) 2023.05.04
함수  (0) 2023.05.04
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .container{
            position: relative;
            width: 200px;
            height: 300px;
        }
        .btn{
            position: absolute;
            bottom: 10px;
            left: 10px;
            background-color: rgba(255, 255, 255, 0.5);
            border: none;
            padding: 10px;
            color: #000;
            font-size: 16px;
        }

    </style>
</head>
<body>
    <div class="container">
        <img src="https://picsum.photos/id/237/200/300" alt="">
        <button onclick="showDetail()" class="btn">상세 보기 열기</button>
        <br>
        <div id="desc" style="display: none;">
            <h1>귀염뽀짝 강아지</h1>
            <div>귀염 귀염</div>
            <button onclick="hideDetail()">상세 보기 닫기</button>
        </div>
    </div>
    <script>
        //함수 1
        function showDetail(){
            document.querySelector("#desc").style.display = "block";
            document.querySelector(".btn").style.display = "none";

        }
        function hideDetail(){
            document.querySelector("#desc").style.display = "none";
            document.querySelector(".btn").style.display = "block";
        }

        //함수 2
    </script>
</body>
</html>

'JS' 카테고리의 다른 글

배열  (0) 2023.05.04
객체  (0) 2023.05.04
이벤트  (0) 2023.05.04
함수  (0) 2023.05.04
연산자  (0) 2023.05.04

마우스 이벤트

키보드 이벤트

폼 이벤트

문서 로딩 이벤트

 

'JS' 카테고리의 다른 글

객체  (0) 2023.05.04
마우스 클릭 이벤트 활용  (0) 2023.05.04
함수  (0) 2023.05.04
연산자  (0) 2023.05.04
자료형  (0) 2023.05.04

함수 선언(함수정의)

function 예약어를 사용하고, { } 안에 실행해야 할 명령어를 작성

함수 호출(함수 실행)

함수 이름을 사용해서 함수를 실행

함수 선언은 어디에 두어야 할까.

addNumber(); 

function addNumber {
	....
}

addNumber();

함수 호출 시  HTML 요소 중 렌더링이 완료 되기 전에 호출하는 코드를 실행 한다면 
요소를 찾을 수 없어 오류가 발생 합니다.

let 과 const

let - 프로그램 안에 값이 변할 수 있는 변수

const - 프로그램 안에서 값이 변하지 않는 변수

 

변수의 스코프

호이스팅 없음

변수의 재선언 불가 - 같은 스코프 안에 같은 변수를 다시 선언할 수 없음

 

매개변수(parameter) 와 인수(argument) 차이점

매개변수 
- 함수를 실행하기 위해 필요하다고 지정하는 값 
- 함수를 선언할 때 함수 이름 옆의 괄호 안에 매개변수 이름을 넣음 
function addNumber(a, b) {
	let sum = a + b; 
  return sum;
}
인수(argument) 
- 함수를 실행하기 위해 필요하다고 지정하는 값 
- 함수를 실행 할때 매개변수로 넘겨주는 값
addNumber(19, 10);

익명 함수

이름이 없는 함수 
함수 자체가 식(Expression) 이기 때문에 함수를 변수에 할당하거나 함수의 매개변수로 
사용할 수 도 있음  (일급 객체)


<script>
    let add = function(a, b) {
        return a + b; 
    }
    console.log(add); // add는  함수 자체가 식(표현식) 이다  
    console.log(add(10, 10)); // 함수 호출은 괄호 + 모양 맞추기
    console.log(add(20, 20));
</script>

즉시 실행 함수

<script>
    // 즉시 실행 함수 
    let result2 = (function() {
        return 10 + 10; 
    })();
    console.log(result2);
    // console.log(result2());
    // 즉시 함수가 실행 되었기 때문에
    // result2 함수식이 아니라 변수에 값이 담긴 상태
</script>

화살표 함수

ES6 이후 버전에서 = > 표기법을 사용해서 함수 선언을 간단하게 작성

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        const hi = function(){
            return "반가워";
        }
        console.log(hi);
        console.log(hi());
        console.log("----------")
        const hi2 = () => {return "야 반가워"}
        console.log(hi2);
        console.log(hi2());
        /*
            화살표 함수를 사용할때 리턴 키워드에 생략 여부
            const hi2 = () => {return "야 반가워"}
            const hi2 = () => "야 반가워";
            let sum = (a,b) => {return a+b}
            let sum = (a,b) => a+b;
        */
        let ms = () => {return "반가워"}
        let ms2 = () => "반가워2"
        let sum = (a,b) => {return a + b}
        let sum2 = (a,b) => a + b
        console.log(ms);
        console.log(ms());
        console.log(ms2);
        console.log(ms2());
        console.log(sum);
        console.log(sum(20,30));
        console.log(sum2);
        console.log(sum2(10,20));
    </script>
</body>
</html>

'JS' 카테고리의 다른 글

마우스 클릭 이벤트 활용  (0) 2023.05.04
이벤트  (0) 2023.05.04
연산자  (0) 2023.05.04
자료형  (0) 2023.05.04
js 소스를 작성 할 때 지켜야 할 규칙  (0) 2023.05.04

형변환

숫자형과 문자형을 더하면 숫자를 문자열로 인식함 곱하기나 나누기,

나머지 연산에서는 문자형 자료를 모두 숫자로 자동 인식함

 

비교 연산자

두 값을 비교하여 true나 false로 결괏값을 내놓는 연산자

논리 연산자

true와 false를 피연산자로 연산자 부울 연산자,

또는 불리언 연산자라고도 함

 

'JS' 카테고리의 다른 글

이벤트  (0) 2023.05.04
함수  (0) 2023.05.04
자료형  (0) 2023.05.04
js 소스를 작성 할 때 지켜야 할 규칙  (0) 2023.05.04
JS 기본 정리  (0) 2023.05.04

숫자형

  1. 정수 - 소수점이 없는 숫자 , 표현 방법에 따라 8진수, 10진수, 16진수
  2. 실수 - 소수점이 있는 숫자, (! 자바스크립트에서는 정밀한 실수 계산을 못 함)
부동소수점 방식으로 숫자를 표현하는 이진법의 한계 때문에 발생하는 문제입니다.
부동소수점 방식은 소수점 위치가 고정되어 있지 않고, 이진법으로 숫자를 표현하기 때문에 
무한 소수의 경우 근사값으로 표현되어 오차가 발생할 수 있습니다.

무한 소수(infinite decimal)란, 소수점 이하의 자리수가 무한히 반복되는 소수를 말합니다. 
예를 들어, 1/3을 소수로 나타내면 0.3333...과 같이 소수점 이하가 무한히 반복됩니다. 
이러한 소수는 유한한 자리수로 정확히 표현할 수 없기 때문에, 근사값으로 표현하거나, 
무한 반복되는 자리수를 생략하여 유한한 자리수로 표현해야 합니다.

 

문자형 - 홑따옴표,쌍따옴표로 표기 한다.

논리형 - true, false

undefined - 자료형이 정의 되지 않았을때의 상태

null - 처음에 할당 된 값이 더이상 유효 하지 않다는 의미

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
       let first;
       console.log(first);
       let second = 100;
       console.log(second);
       second = null;
       console.log(second);

    </script>
</body>
</html>

배열 - 하나의 변수에 여러 값을 저장, 인덱스 0 부터시작, [] 대괄호를 사용한다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        let store = ["바지","상의",100, true];
        console.log(store);
        console.log(store[3]);
        console.log(store[2]);
        console.log(store[1]);
        console.log(store[100]);
    </script>
</body>
</html>

객체 - 여러 자료형 을 중괄호 { } 로 묶는 것 , 키(key), 값(value)을 한 쌍으로 여러 자료형을 저장한다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        let student = {
            firstName : "홍아",
            lastName : "항아",
            age : 30,
            address : "부산"
        };
        console.log(typeof student);
        console.log(student.firstName);
    </script>
</body>
</html>

자바스크립트 자료형의 특징

느슨한 자료형 체크(weak datatype check) 자바스크립트는

미리 변수의 자료형을 지정하지 않음 변수를 지정하고 원하는 값을 할당만 하면 됨

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div>
        <label for="">원래 가격: </label>
        <input type="text" id="originPrice"> 원
    </div>
    <div>
        <label for="">할인율: </label>
        <input type="text" id="rate"> %
    </div>  
    <button onclick="showPrice()">할인된 가격 계산</button>
    <br>
    <div id="showResult"></div>
    <script>
        function showPrice(){
            let originPrice = document
            .querySelector("#originPrice").value;

            let rate = document.querySelector("#rate").value;
            
            let calcPrice = originPrice * (rate/100);
            let resultPrice = originPrice - calcPrice;

            //백틱 ``
            document.querySelector("#showResult")
            .innerHTML = `상품의 원래 가격은 ${originPrice} 이고, 
            할인율은 ${rate}% 입니다. 할인된 금액 ${calcPrice}을 적용하여,
            ${resultPrice} 입니다`;

        }

    </script>
</body>
</html>

'JS' 카테고리의 다른 글

이벤트  (0) 2023.05.04
함수  (0) 2023.05.04
연산자  (0) 2023.05.04
js 소스를 작성 할 때 지켜야 할 규칙  (0) 2023.05.04
JS 기본 정리  (0) 2023.05.04
대소문자를 구별하여 소스를 작성한다
읽기 쉽게 들여쓰는 습관을 들인다
세미콜론으로 문장을 구분한다
소스에 메모하려면 주석을 사용한다
// 한 줄 주석
/* 여러 줄
주석도 사용할 수 있습니다. */

식별자(변수)는 정해진 규칙을 지켜 작성한다
예약어는 식별자(변수)로 사용할 수 없다
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div id="result"></div>

    <script>
        function calcAge() {
            let currentYear = 2023;
            let birthYear = 2000;
            let age;
            age = currentYear - birthYear;
            document.querySelector("#result").innerHTML = "당신의 나이는 : " + age + "입니다";

        }
        //함수 호출
        calcAge();
    </script>


</body>

</html>

'JS' 카테고리의 다른 글

이벤트  (0) 2023.05.04
함수  (0) 2023.05.04
연산자  (0) 2023.05.04
자료형  (0) 2023.05.04
JS 기본 정리  (0) 2023.05.04
**기본 개념**

자바스크립트(JavaScript)는 웹 브라우저에서 동작하는 스크립트 언어 중 하나입니다.
HTML, CSS와 함께 웹 프로그래밍을 할 수 있도록 고안되었으며, 다양한 용도로 사용됩니다.

자바스크립트는 기본적으로 클라이언트 측에서 실행되는 스크립트 언어로, 
웹 페이지를 동적으로 만들고, 사용자와 상호 작용하는 기능을 구현할 수 있습니다.
예를 들어, HTML 요소의 속성 값을 변경하거나, 이벤트 핸들러를 등록 하여 사용자의 동작에 따라 새로운
기능을 수행하도록 할 수 있습니다. 또한, AJAX를 이용하여 서버와 비동기적으로 데이터를 주고받는 기능을 구현할 수도 있습니다.

자바스크립트는 브라우저를 제어하는 데 주로 사용되지만,
Node.js와 같은 서버 측 프레임워크를 이용하여 서버 측에서도 사용될 수 있습니다.

이러한 이유로, 자바스크립트는 현재 가장 널리 사용되는 언어 중 하나이며, 다양한 분야에서 사용되고 있습니다.

컴파일러 VS 인터프리터

인터프리터 언어는 실행 시간에 소스 코드를 해석하여 실행하는 언어로, 
코드를 컴파일하지 않고 바로 실행합니다. JavaScript 엔진은 소스 코드를 바로 실행할 수 있는 중간 
코드로 변환하는 Just-In-Time 컴파일러를 사용하여 코드를 해석하고 실행합니다.

그러나 최근 JavaScript 엔진은 기계어 코드를 생성하는 옵티마이저를 갖추고 있어, 
컴파일러 언어와 유사한 성능을 낼 수 있습니다. 이러한 이유로 일부 전문가들은 JavaScript를 
컴파일 언어로 분류하기도 합니다.

결론적으로, JavaScript는 일반적으로 인터프리터 언어로 분류되지만, 
최근의 개발 동향으로 봤을 때 컴파일러 언어와의 경계가 점점 흐려지고 있습니다.

먼저 알고 있어야 할 사전 지식

웹 페이지가 로드 되면 브라우저는 페이지의 문서 객체 모델을 생성 합니다 .

HTML DOM 모델 은 Objects 트리로 구성됩니다 .

DOM Tree 통해 JavaScript는 동적 HTML을 생성하는 데 필요한 모든 기능을 얻을 수 있습니다.

HTML 요소를 변경
HTML 속성을 변경
새로운 HTML 요소와 속성을 추가
페이지의 모든 CSS 스타일을 변경
HTML 요소 및 속성을 제거

페이지에서 새로운 HTML 이벤트를 생성
페이지의 모든 기존 HTML 이벤트에 반응

 

'JS' 카테고리의 다른 글

이벤트  (0) 2023.05.04
함수  (0) 2023.05.04
연산자  (0) 2023.05.04
자료형  (0) 2023.05.04
js 소스를 작성 할 때 지켜야 할 규칙  (0) 2023.05.04

+ Recent posts