TIL 0426 object, scope, class

Yunji·2020년 4월 26일
0

TIL

목록 보기
33/54

수학 계산을 할 때는 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

0개의 댓글