🍁Event Bubbling, Event Tunneling ⬆️Event Bubbling 이벤트 버블링(Event Bubbling)은 이벤트가 발생한 요소에서 시작해 상위 DOM 트리 요소로 이벤트가 전파되는 방식이다. 가장 하위의 요소에서 이벤트가 시작되어 가장 상위의 부모 요소까지 이벤트가 전파되며, 각 요소의 이벤트 핸들러가 순차적으로 호출된다. ⬇️Event Tunneling 이벤트 터널링(Event Tunneling)은 이벤트 버블링과 반대로 이벤트가 상위 요소에서 시작하여 이벤트가 발생한 요소까지 전파되는 방식이다. 이벤트는 상위 요소에서 시작하여 하위 요소로 내려가며, 마찬가지로 이벤트 핸들러는 최상위 요소에서 시작하여 하위 요소로 내려가면서 호출된다. 이벤트 터널링은 다른 말로 Event ..
🍁Template String Template String은 ES6때 만들어진 문자열 표기법이다. 템플릿 문자열은 역따옴표(backticks)로 문자열을 감싸고, 변수나 표현식을 ${} 안에 넣어 문자열을 보다 효과적으로 결합할 수 있도록 해준다. let name = 'isaac'; let age = 20; console.log('이름은 ' + name + '이고, 나이는 ' + age + '세 입니다.'); 변수를 만들어서 문자열로 출력을 하고 싶다. 위와 같이 사용할 수도 있지만, 이때 사용할 수 있는 문자열 표기법이 존재한다. 문자열 표기법 'string' "string" `string` : template string 3개의 표기법 모두 같지만, `string` 방식의 문자열 표기법을 사용하면 $..
🍁Closure 클로저(Closure)는 고유한 개념이 아니라, 함수형 프로그래밍 언어에서 발견되는 특성(기술)이다. 클로저는 함수 내부에 정의된 함수가 외부 함수에 접근할 수 있는 방법을 제공하며, 이를 통해 함수는 자신이 생성된 위치의 스코프에 있는 변수들에 접근하고 수정할 수 있게 한다. 지역 함수 선언 function outer() { //지역 변수(outer) let a = 10; console.log('a', a); //지역 함수(outer) function inner() { //지역 변수(inner) let b = 20; console.log('b', b); } inner(); //console.log('b', b); } outer(); //inner(); //console.log('a', ..
🍁window 객체 [JavaScript] BOM: window 객체 🍁window 객체 window.open(URL, name, options); URL: 새 창의 URL name: 새 창의 이름 options: 새 창 옵션들 window로 창을 새로 만들었을 때 만들어진 창을 자식창이라고 한다. 옵션들 사이는 띄어쓰기를 해도 되 isaac-christian.tistory.com window 객체에 대해서는 위 글을 참고한다. 내장 객체에 프로퍼티 추가 const isaac = { name: 'isaac' } isaac.age = 25; 자바스크립트는 객체에 프로퍼티를 자유롭게 추가할 수 있다. const now = new Date(); console.log(now); now.color = 'tomat..
🍁 Function 자바스크립트의 함수는 1급 객체(First Citizen)라는 말이 있다. 1급 객체는 자바스크립트에서만 볼 수 있는 현상은 아니고, 다른 언어(Switf - 아이폰 개발 언어, Python 등)에서도 볼 수 있는 현상이다. 이는 쉽게 말하자면 함수를 객체처럼 취급하여 함수를 값(데이터)으로 사용할 수 있게 하는 것이다. [JavaScript] Function (함수) 🍁Function Java Method 자바의 메서드는 아래의 양식으로 만들어진다. public [static] int m1 (int num) { return 10; } 자바스크립트는 접근 지정자 표현이 없으므로 public을 생략한다. static은 정적인지를 묻는 isaac-christian.tistory.com 자..
🍁Object 자바스크립트에 클래스는 없는 대신에 내장 객체를 제공한다고 했다. 이건 클래스가 아닌가요? class Test { } 아닙니다. 이건 클래스의 껍데기를 가진 다른 것이에요. 내장 객체 new Array() new Date() Math.메소드() 기타 등등.. 내장 객체에는 Array, Date, Math, Object 등이 있다. BOM 객체 window document form text button 기타 등등.. DOM 객체 element attribute text comment 기타 등등.. DOM 객체는 노드들을 의미한다. 위의 객체들은 이미 타입이 정의되어 있어서 개발자가 가져다 쓰는 것들이다. 그러나 개발을 하다 보면 개발자가 스스로 타입을 정의해야 하는 일이 생긴다. 이럴 때 사..
🍁변수 선언하기 var, let, const를 JavaScript에서 사용할 수 있다. var과 let은 변수를 선언할 때, const는 상수(final 변수)를 선언할 때 사용한다. 1. var var은 BOM때부터 있었고, DOM에 와서도 여전히 지원하며 사용하고 있다. var변수는 function-scoped이기 때문에 제어문을 영역으로 인식 불가능하다. var a = 10; var a = 20; console.log(a); var변수는 중복 선언이 가능하다. 하지만 의도적으로 안 할 뿐이며, 상수 선언을 할 수 없다. 2. let let변수는 ES6(ECMAScript 2015) 때 만들어진 변수이다. let변수는 block-scoped를 가지므로 함수와 제어문에서 사용할 수 있다. let은 변수..
🍁innerHTML을 사용하는 방법 div1.innerHTML = ''; 동적으로 태그 생성하는 방법으로 innderHTML을 사용할 수 있다. 하지만 이 과정에서 속성에 오타가 있을 경우 속성은 적용되지 않으며, 태그명이 틀릴 경우 태그가 적용되지 않게 된다. 이는 문자열로 조작하기 때문에 생기는 문제이다. innerHTML은 쉽고 작성 비용이 저렴한 반면에 문자열로 조작한다는 특징 때문에 문제가 발생할 가능성이 있다. 🍁정석적인 방법 이 방법은 정석적이고 체계적인 방법이지만, innerHTML보다 복잡하고 비용이 더 많이 든다. 1. 태그 생성 var input = document.createElement('input'); // 2. 속성 생성 //input.type = 'text'; //BOM //..