


function test() {
if (true) {
globalData = "이런 변수 선언은 정말 아니다.";
var varData = "옛날에는 이런거 썼데.";
let letData = "이젠 let이지.";
const constData = "상수";
//constData = 30; // const 변수 재할당 불가
// TODO: globalData, varData, letData, constData 중 호출 가능한 변수와 호출 불가능한 변수를 확인하시오.
console.log("g", globalData, "v", varData, "l", letData, 'c', constData)
// END
}// if scope
// TODO: globalData, varData, letData, constData 중 호출 가능한 변수와 호출 불가능한 변수를 확인하시오.
console.log("g", globalData, "v", varData)
// END
}// test method scope
test();
// TODO: globalData, varData, letData, constData 중 호출 가능한 변수와 호출 불가능한 변수를 확인하시오.
console.log("g", globalData)
// END


| 타입 | 설명 및 예시 |
|---|---|
| number | 정수 또는 부동소수점 실수 값let num = 100;let num2 = 3.14; |
| string | 작은 따옴표 또는 큰 따옴표로 감싼 문자let str = "Hello JavaScript";let str = 'Hi There'; |
| boolean | true와 false의 논리 값let bool = true; |
| undefined | 변수를 선언만 하고 값을 할당하지 않았거나 undefined를 할당한 경우let str; |
| null | 변수에 null 값이 할당된 상태let str = null; |
| 카테고리 | 메서드/속성 | 설명 | 예시 |
|---|---|---|---|
| 검색 | indexOf() | 문자열에서 특정 문자열의 첫 번째 위치를 반환. 없으면 -1 | '안녕하세요'.indexOf('하') // 2 |
| 검색 | includes() | 특정 문자열 포함 여부 확인. true/false 반환 | '안녕하세요'.includes('안녕') // true |
| 검색 | startsWith() | 특정 문자열로 시작하는지 확인. true/false 반환 | '안녕하세요'.startsWith('안녕') // true |
| 추출 | substring() | slice와 유사하며 음수 인덱스 사용 불가 | '안녕하세요'.substring(0,2) // '안녕' |
| 추출 | split() | 구분자를 기준으로 문자열을 배열로 분할 | 'A,B,C'.split(',') // ['A','B','C'] |
| 변형 | replace() | 첫 번째로 일치하는 부분을 새로운 문자열로 교체 | 'Hello'.replace('ello','i') // 'Hi' |
| 변형 | trim() | 문자열 양끝의 공백 제거 | ' 안녕 '.trim() // '안녕' |
| 유틸리티 | length | 문자열의 길이를 반환하는 속성 | '안녕하세요'.length // 5 |
| 유틸리티 | charAt() | 지정된 인덱스의 문자를 반환 | '안녕하세요'.charAt(1) // '녕' |
| 유틸리티 | concat() | 두 개 이상의 문자열을 결합 | '안녕'.concat('하세요') // '안녕하세요' |
변수를 선언만하고 아직 값을 할당하지 않은 상태
객체의 미정의된 속성을 참조하려 할 때
함수에서 void를 반환하는데 출력하는 경우
사용처 타입에 따라 여러 형태로 변환됨
| 사용처 타입 | boolean | 숫자 | 문자열 |
|---|---|---|---|
| 평가 값 | false | NaN | "undefined" |

console.log(coffees[0], typeof coffees, Array.isArray(coffees));
console.log(coffees[100]);
JavaScript 배열의 특징
CRUD를 위한 메서드
| 구분 | 종류 | 설명 |
|---|---|---|
| 추가 | push(element1, ..., elementN) | element들을 배열에 추가하고 최종 length 리턴 |
| 추가 | unshift([element1[, ...[, elementN]]]) | 배열의 앞에 element들을 추가하고 최종 length 리턴 |
| 삭제 | pop() | 배열의 마지막 요소를 삭제하고 삭제된 데이터를 리턴 |
| 삭제 | shift() | 배열의 첫 번째 요소를 삭제하고 삭제된 데이터를 리턴 |
| 검색 | findIndex(callback) | callback에서 true를 리턴하는 처음 요소의 index 반환 |
| 검색 | find(callback) | callback에서 true를 리턴하는 처음 요소 반환 |
| 검색 | indexOf(element) | element의 첫 번째 위치 반환. 없으면 -1 |
| 검색 | lastIndexOf(element) | element의 마지막 위치 반환 |
| 검색 | includes(element) | element가 있는지 boolean으로 반환 |
| 변형 | splice(start, deleteCount[, item1[, item2[, ...]]]) | start에서 deleteCount 만큼 지우고 item들을 추가함 |
| 변형 | join(delimiter) | 요소들을 delimiter로 결합한 문자열로 변환 |
| 변형 | concat(value1[, value2[, ...[, valueN]]]) | 기존 배열에 새로운 배열을 연결하여 리턴 |
const user = new Object();
user.name = 'John';
const user = {
name : 'John",
age : 30,
introduce : function() {
console.log(`이름: ${this.name}, 나이: ${this.age}`);
}
}
피연산자들을 상황에 따라 형 변환 후 연산 진행
NaN과의 연산 결과는 항상 NaN
| 구분 | + | -, /, *, %, ** |
|---|---|---|
| String | 결합 연산자로 작용 | 숫자로 변환해서 연산 숫자로 변환에 실패하면 NaN 반환 |
| boolean | true-> 1, false -> 0으로 변환 후 연산 | true-> 1, false -> 0으로 변환 후 연산 |
| null | 0으로 변환 | 0으로 변환 |
| 참조형 | toString() 결과와 결합 연산 | valueOf() 결과와 연산 - valueOf()가 원시값을 반환하면 그 값과 연산 - 그렇지 않으면 toString()의 결과와 연산 |
| 구분 | 타입 변환 |
|---|---|
| number | 기존으로 변환되지 않음 |
| string | 문자열끼리 비교: 유니코드 값을 이용해 사전 순서로 비교 나머지는 숫자로 변환 후 비교 (변환 실패 시 NaN → false로 간주) |
| boolean | true / false는 각각 1 / 0 숫자로 변환 후 연산 |
| falsy | false는 0이므로 0으로 변환 |
| 참조형 | valueOf() 결과와 연산 • valueOf()가 원시값을 반환하면 그 값과 연산 • 그렇지 않으면 toString() 결과와 연산 |
| 역할 구분 | 설명 | 활용 예 |
|---|---|---|
| 메서드 | 호출 가능한 루틴으로서의 함수 - runtime에 ()를 붙여주면 실행- 일반적으로 알고 있는 기능 | function sayHello(name) { console.log("Hello " + name); } sayHello("jang"); |
| 생성자 | 다른 객체를 생성할 수 있는 함수 - new와 함께 사용 - 일반적으로 대문자로 시작 | function Student(name) { this.name = name; } console.log(new Student("홍길동").name); |
| 객체 | - 인자로 전달 가능(1) - 변수에 할당 가능(2) - 함수의 반환 값으로 사용 가능(3) | function getMyParseInt(x) { return x || window.parseInt; // (3) } let myParseInt = getMyParseInt(Number.parseInt); // (1), (2) console.log(myParseInt("123cm")); |

function function_name(parameter_name, ...) {
...
return value;
}
function add(x, y) {
return x + y;
}
let minus = function(x, y) {
return x - y;
};
let multi = new Function("x", "y", "return x * y");
console.log(multi(3, 4));
(parameter list) => {
//do something
}
let arrowFunc = (p1, p2) => {
return p1 + p2;
};
let arrowFunc = (p1, p2) => p1 + p2;
let arrowFunc = p1 => "Hello" + p;
console.log(hello("hong"));
function hello(name) {
return "hello, " + name;
}

(method)
Array<string>.sort(compareFn? : ((a : string, b : string) => number) | undefined) : sting[]
arr.sort(
function (first, secont) {
return first.length - second.length;
}
};