.addEvnetListener()
.addEventListener()
: 이벤트가 발생했을 때 실행할 동작(함수)를 등록하는 메서드
onClick
), 키입력(keydown
), 마우스(mousevoer
) 등 다양한 이벤트 감지removeEventListener()
를 사용해 등록된 Event Listener를 삭제 가능 // Syntax
element.addEventListener("Event Type", fn)
// Example
const handleOnClick = () => {
alert("Button Clicked!!");
};
const button = document.querySelector("button");
button.addEventListener("click", handleOnClick)
preventDefault()
<a>
<submit>
태그는 인터렉션 할 경우 페이지 이동 혹은 새로고침 됨
이러한 기본 설정이 되어 있는 태그들을 preventDefault()
를 통해서 무효화 할 수 있음
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>preventDefault() 예제</title>
</head>
<body>
<a href="https://example.com" id="prevent-link">
클릭하면 이동해야 하지만 preventDefault() 적용됨
</a>
<script>
document.querySelector("#prevent-link")
.addEventListener("click", function (event) {
event.preventDefault(); // 기본 이동 막기
console.log("링크 이동이 방지되었습니다!");
});
</script>
</body>
</html>
console.
console.log
는 요소를 HTML과 같은 트리 구조로 출력
console.dir
은 요소를 JSON과 같은 트리 구조로 출력
→ 대부분의 경우 console.log
로 출력으로도 충분
JavaScript는 인터프리터 언어로, 코드를 위에서부터 한 줄씩 읽으며 실행됨.
if
문의 최적 배치조건 검사는 최대한 초기에 수행하여, 불필요한 코드 실행을 방지하는 것이 좋음
new
function Person(name, age) {
this.name = name;
this.age = age;
}
const user = new Person("John", 25);
console.log(user); // { name: 'John', age: 25 }
Person()
은 객체를 생성하는 "청사진" 역할을 하는 생성자 함수
new
키워드는 새로운 인스턴스를 생성하는 필수적인 요소
new
키워드 없이 생성자 함수를 호출한 경우 ↓
❌ ❌ ❌
function Person(name, age) {
this.name = name; // 전역 객체(window 또는 globalThis)에 name 추가
this.age = age; // 전역 객체(window 또는 globalThis)에 age 추가
}
const user = Person("John", 24);
console.log(user); // undefined
console.log(name); // "John" (전역 변수로 추가됨)
console.log(age); // 24 (전역 변수로 추가됨)
설명보단 예시로 알아보는게 제일 빠름
// Example
// if문
let a = 1
let b = 2
if( a > b ) {
console.log(true);
} else {
console.log(false);
}
// 삼항연산자
let a = 3
let b = 5
const compare = (a > b) ? true : false;
console.log(compare);
// Syntax
function a() {
console.log("Hello World");
};
// Syntax
// 익명 함수
let b = function() {
console.log("Hello World");
};
// 화살표 함수(ES6)
const c = () => {
console.log("Hello World");
};
구분 | 함수 선언문 (Function Declaration) | 함수 표현식 (Function Expression) |
---|---|---|
이름 유무 | ✅ 반드시 함수 이름 필요 | ✅ 익명 함수 가능 (let b = function() {...} ) |
호이스팅 | ✅ 호이스팅 O (선언 전에 호출 가능) | ❌ 호이스팅 X (선언 후에만 호출 가능) |
실행 시점 | 코드 실행 전에 미리 등록됨 | 변수에 할당된 후에 실행 가능 |
선언 방식 | 독립적인 함수로 선언됨 | 변수에 저장됨 (값처럼 사용 가능) |
사용 예 | 전역 또는 재사용 함수 | 콜백 함수, 동적 함수 생성 |
함수 선언문과 함수 표현식은 같은 기능을 하지만 호출 시점, 호이스팅 등이 다르다.
// 금칙어 : 콜라
function hasCola(str) {
if (str.indexOf("콜라")) {
console.log("금칙어가 있습니다.");
} else {
console.log("통과");
}
};
hasCola("와 사이다가 짱이야!"); // "금칙어가 있습니다."
hasCola("무슨소리, 콜라가 최고"); // "금칙어가 있습니다."
hasCola("콜라"); //"통과"
1번 : indexOf("콜라")
는 주어진 문자열에서 "콜라"
가 처음 등장하는 인덱스를 반환
그런데 indexOf()
는 문자열에서 찾는 값이 없을 경우 -1
을 반환
1번 : false
에 해당하지 않으므로 true
를 반환
3번 : "콜라"
라는 문자열이 인덱스상 0에 위치해 있기 때문에 false
반환
// 금칙어 : 콜라
function hasCola(str) {
if (str.indexOf("콜라") > -1 ) {
console.log("금칙어가 있습니다.");
} else {
console.log("통과"):
}
}
hasCola("와 사이다가 짱이야!");
hasCola("무슨소리, 콜라가 최고");
hasCola("콜라");