수학 계산을 할 때는 javascript 의 Math 객체를 사용하면 된다
Math.round() 는 반올림 함수이다
Math.ceil() 는 올림함수, Math.floor() 는 내림함수이다
console.log(Math.round(4.55)); // 5 console.log(Math.ceil(4.55)); // 5 console.log(Math.floor(4.55)); // 4
Math.random() 으로 0 과 1(불포함) 사이의 랜덤숫자도 구할 수 있다
let num1 = Math.random()*50; console.log(Math.floor(num1)); //44
데이터는 object(객체) 로 표현할 수 있다
객체{ }는 순서가 없고 key 와 value 로 이루어져 있다
프로퍼티 이름은 중복이 되면 안되지만 값을 중복될 수 있다 프로퍼티 값에는 어느 type이나 가능하다
객체 안에 객체 배열 안에 객체 둘 다 가능하다
객체를 선언하는 방법은
const 객체이름 = { property이름1: property값, // 각각을 프로퍼티라고 한다 property이름2: property값 } const arr1 = { name: 'jake', age: 20, city: 'busan' }
객체의 프로퍼티 값에 접근하고 싶으면 .프로퍼티이름 또는 ["프로퍼티이름"] 으로 접근하면 된다
이렇게 접근해 프로퍼티 값을 수정할 수도 있다 또는 새로운 프로퍼티를 추가할 수도 있다
console.log(arr1["name"]); //jake console.log(arr1.age); //20 arr1["name"] = "Pin"; //name 의 값이 jake에서 pin 으로 바뀜 arr1.food = "pizza"; // food: "pizza" 가 추가됨
순서가 있는 데이터는 배열[ ]
배열은 index 로 접근 가능하다
arr = ['a', 'b', 'c']; arr[1] <= 'b'
scope 는 변수가 쓰일 수 있는 범위를 의미한다
변수가 선언된 장소에 따라 쓸 수 있는 공간이 있고 쓸 수 없는 공간이 있다
block 이란 curly brace 로 감싸진 부분을 의미한다 {}
block 내부에서 정의된 변수는 그 안에서만 쓸 수 있다 이러한 변수를 지역(local)변수 라고 부른다
그 반대로 전역(global)변수는 block 밖에서 선언된 변수를 말한다 이 변수는 코드 어디서든 접근 가능하다
전역변수를 쓰면 접근하기 쉬워서 편하지만 너무 많이쓰면 문제가 생긴다 {}가 끝나면 더이상 사용할 수 없는 지역변수와는 달리 전역변수는 계속 사용할 수 있어 값이 변경되면 에러가 나기도 한다
그래서 전역변수 보다는 지역변수를 쓰는것이 좋다
let b = "banana"; // b 는 전역변수 function test() { //이 공간이 block let a = "apple"; // a 는 지역변수 b = "bye"; // b 접근 가능 console.log(b); }
switch 는 조건문을 작성하는 또 다른 방법으로 만약 조건문이 길어질 것 같을때 사용하면 좋다
각 조건에는 break 로 끊어주어야 다음 조건이 실해되지 않는다 default 값을 줄 수도 있다
switch (test) { case "a": //test 값이 "a" 이면 return "test 는 a"; // "test 는 a" return break; case "b": return "test 는 b"; break; default: return "test 입니다."; break; }
객체지향 프로그램의 핵심인 class 는 object 를 잘 설계하기 위한 틀이다
클래스는 원하는 구조의 틀을 만들어서 그 조건에 맞는 객체를 찍어내듯이 만들 수 있다
클래스로 객체를 생성하는 것을 "인스턴스화" 라고 하고 클래스를 통해 생성된 객체는 인스턴스 라고 한다 클래스는 새로운 인스턴스를 만들때마다 constructor() 메서드를 호출한다
class Name{ constructor(name, age) { this.name = name; this.age = age; } } const jake = new Name('pin', 23);
Name 는 클래스 이름이다 클래스 이름은 항상 대문자로 시작해야 하고 CamelCase 로 작성해야 한다
클래스의 실행 범위 내에서 this 는 해당 인스턴스를 의미한다
인스턴스는 클래스 이름에 new를 붙여 생성한다 () 괄호 안에는 전달할 인자를 넣는다
메서드는 객체가 프로퍼티 값으로 가지고 있는 함수를 말한다 ,로 구분하지 않는다
const test = { to: function() { console.log(); } } test.to(); //호출
프로퍼티에 접근하는 방법은 두가지가 있는데 .과 [] 이다
숫자로 된 키나 변수로 접근할때는 []로 접근해야 한다
이미 존재하는 객체에 값을 할당하면 값이 교체가 된다 없던 객체에 값을 할당하면 새로운 프로퍼티가 추가된다
const 로 선언된 변수는 수정 불가능하지만 객체는 const 로 선언해도 프로퍼티에 접근해서 내용을 추가하거나 수정하는것이 가능하다
변수에 텍스트를 저장하면 텍스트 자체가 저장되지만 객체는 레퍼런스로 저장된다
const a = "a"; const b = "a"; console.log(a === b); // true const hi ={ say: "hi" } const hello ={ say: "hi" } console.log(hi === hello); // false
arrow function
function name() {} const name = () => {} //인자가 하나면 () 생략 가능 const age = 인자 => {}
back tick 으로 감싸서 string 안에 변수를 넣을 수 있다
변수를 넣으려면 ${}로 감싸줘야 한다
includes 는 특정문자가 있는지 확인할 수 있다
const name = "사라"; const hi = `안녕하세요. 저는 ${name} 입니다.`; console.log(hi.includes('저는')); //true