자바스크립트 문법정리

김예린·2023년 12월 29일
0

문자열 결합하기

str1.concat(str2)

문자열 자르기

let str = "Hello, world!";
console.log(str.substr(7, 5)); // "world"
console.log(str.slice(7, 12)); // "world"

substr(n번째부터, n개까지만) 출력
slice(시작위치, 끝위치) 출력

문자열 검색

let str = "Hello, world!";
console.log(str.search("world")); // 7

search: 내가 찾는 문자가 어디서부터 시작되는가에 대한 시작위치를 '숫자'로 표현

문자열 분할

let str = "apple, banana, kiwi";
let result = str.split(",");
console.log(result); // ["apple", " banana", " kiwi"]

split("값") : 값 기준으로 분할하여 새로운 배열에 배열 만듬

undefined

let x;
console.log(x); // undefined

값이 할당되지 않은 변수를 의미함.
null은 값이 존재하지 않음을 명시적으로 나타내는 방법임. undefined와는 다름.

암시적 형변환

문자열 변환

console.log(1 + "2"); // "12"
console.log("1" + true); // "1true"
console.log("1" + {}); // "1[object Object]"
console.log("1" + null); // "1null"
console.log("1" + undefined); // "1undefined"

자바스크립트는 다른 자료형을 '문자열'로 변환 후 연산 실행

숫자 변환

console.log(1 - "2"); // -1
console.log("2" * "3"); // 6
console.log(4 + +"5"); // 9

연산자를 사용할 때, 문자열을 숫자로 변환. 빈 문자열("")이나 공백 문자열(" ")은 0으로 변환.

불리언 변환

console.log(Boolean(0)); // false
console.log(Boolean("")); // false
console.log(Boolean(null)); // false
console.log(Boolean(undefined)); // false
console.log(Boolean(NaN)); // false
console.log(Boolean("false")); // true
console.log(Boolean({})); // true

어떤 값이 true가 되고 false가 되는지 기억하자!!
문자열은 빈 문자열을 제외하고 항상 true!
객체도 true!

더하기 연산자를 제외하고는 다른 연산자들을 문자열과 숫자를 함께 쓸 경우 자동으로 숫자로 변환되어 계산된다!

스코프

전역스코프

let x = 10;
function printX() {
console.log(x);
}
printX(); // 10

전역 변수 x는 어디에서든 참조 가능!

지역 스코프

function printX() {
let x = 10;
console.log(x);
}
printX(); //

함수 안에서 지역 변수를 설정하면 해당 함수 내에서만 참조 가능!

블록 스코프

if (true) {
let x = 10;
console.log(x);
}
console.log(x); // ReferenceError: x is not defined

if 문 내에서 설정한 변수는 if 블록 안에서만 참조 가능!

객체 메소드

object.keys메소드

let person = {
  name: "홍길동",
  age: 30,
  gender: "남자"
};

let keys = Object.keys(person);

console.log(keys);   // ["name", "age", "gender"]

person의 속성 이름(key)들을 배열로 반환.

object.values메소드

let person = {
  name: "홍길동",
  age: 30,
  gender: "남자"
};

let values = Object.values(person);

console.log(values);   // ["홍길동", 30, "남자"]

person의 속성 값(value)들을 배열로 반환.

object.entries메소드

let person = {
  name: "홍길동",
  age: 30,
  gender: "남자"
};

let entries = Object.entries(person);

console.log(entries);

객체의 속성 이름과 속성 값들을 2차원 배열로 반환.

object.assign메소드

let person = {
  name: "홍길동",
  age: 30,
  gender: "남자"
};

let newPerson = Object.assign({}, person, { age: 35 });

console.log(newPerson);   // { name: "홍길동", age: 35, gender: "남자" }

원래 객체를 복사하여 새로운 객체를 만드는 메소드. 뒤에 {}에서 값 변경도 가능!

객체를 ===연산자로 비교하면 같은 객체여도 false가 나온다.
객체는 크기가 크기 때문에 메모리에 저장할 때 별도의 공간에 저장되고, 객체의 내용이 같더라도 객체는 선언한 변수에는 별도의 공간에 대한 주소가 저장된다.
그러므로 ===연산자를 쓰면 false가 나온다!

profile
아자아자

0개의 댓글