Pre Course 4주차 정리

minjulee97·2019년 9월 29일
0

이번 주에는 Number/Math Methods, 변수의 전달, Scope에 대해 배웠다.

0813 화요일

1. Number Methods

  • Number.isInteger: 정수인지, 아닌지의 여부를 검사한다.
Number.isInteger(3); // true : 숫자가 반드시 정수일 때만 true를 반환한다.
Number.isInteger('a'); // false
Number.isInteger(0.1); // false
  • parselnt/parseFloat: parseInt는 받은 argument를 정수로 형변환하고, parseFloat는 받은 argument를 소수점 숫자를 포함한 채 형변환하여 반환한다.
parseInt("365"); // 365
parseInt("365.17"); // 365
parseInt("Hello"); // NaN
parseFloat("365.17") // 365.17
  • num.toFixed: 해당 숫자의 소수점 자리만큼 반환한다.
let numObj = 123.4517;
numObj.toFixed(); // 123
numObj.toFixed(1); // 123.5 : 반올림한다.
numObj.toFixed(2); // 123.45
numObj.toFixed(3); // 123.452
numObj.toFixed(6); // 123.451700 : 빈 공간은 0으로 채운다.

2. Math Methods

  • Math.min/Math.max: Math.min은 주어진 arguments 중 가장 작은 값을, Math.max는 가장 큰 값을 반환한다.
Math.min(-999, 30, -1111, 23424); // -1111
Math.max(-999, 30, -1111, 23424); // 23424
Math.min("Hello", "World"); // NaN
  • Math.floor/ Math.round: Math.floor는 주어진 숫자의 내림 값을, Math.round는 반올림 값을 반환한다.
Math.floor(34.6); // 34
Math.floor(-24.1); // -25
Math.round(34.6); // 35
Math.round(-24.1); // -24
  • Math.random( ): 0과 1 사이의 난수를 반환한다.
Math.random(); // 0.19523109930025995
Math.random(); // 0.43241790030880645
Math.random(); // 0.7805427432556524

< LEARN YOURSELF >

  • Math.abs: 절댓값을 반환한다.
Math.abs(-24); // 24
Math.abs(7-199); // 192
Math.abs(0); // 0
Math.abs(33); // 33
  • sqrt/pow: 양의 제곱근을 반환한다.
Math.sqrt(25); // 5
Math.sqrt(144); // 12
Math.sqrt(16 * 4); // 8

3. 변수의 전달

  • pass by value(값을 복사해서 넘김)
let a = 13;
let b = a;
b = 37;
console.log(a) // 13

--> 원본은 변하지 않고, 복사본만 변한다. (문자열/ 숫자/ 불리언의 경우에 해당)

  • pass by reference(주소값을 복사해서 넘김)
let a = { c: 13 };
let b = a;
b.c = 37;
console.log(a) // { c: 37 }

--> 주소값을 복사했으므로, 원본도 변한다. (객체/ 배열/ 함수의 경우에만 해당)

0815 목요일

4. Scope

  • Local Scope vs Global Scope
let greeting = 'Hello';                   
function greetSomeone() {
	let firstName = 'Minju';
 	return greeting + ' ' + firstName;
} 
greetSomeone(); // => "Hello Minju"
firstName; // => ReferenceError

greetSomeone 함수가 정의된 범위는 Local Scope, 해당 함수를 포함한 전체 범위는 Global Scope이다.
여기서 주의할 점은 안쪽에 위치하는 Local Scope에서 바깥 변수/함수를 참조할 수는 있지만, 바깥쪽에 위치하는 Global Scope에서 안쪽 변수/함수를 참조하는 것은 불가능하다는 것이다.

  • Function Scope vs Block Scope
  • let 키워드: Block 단위의 Scope를 가진다.
for (let i = 0; i < 5; i++) {
	console.log(i) // 0, 1, 2, 3, 4
 } 
 console.log('final i:', i); // ReferenceError
  • var 키워드: 함수 단위의 Scope를 가진다.
for (var i = 0; i < 5; i++) {
	console.log(i); // 0, 1, 2, 3, 4
}
console.log('final i:', i); // final i: 5
  • const 키워드: 값이 변하지 않는 변수, 즉 상수를 정의할 때 사용하는 키워드이다(Block 단위의 Scope).
const pi = 3.14;
pi = 3.1415; // TypeError

정리

letconstvar
유효 범위Block ScopeBlock ScopeFunction Scope
재정의가능불가능
재선언불가능불가능가능

마무리

4주차에는 Number/Math Methods, 변수의 전달, Scope에 대해 알아보는 시간을 가졌다.
평소에 코플릿 문제를 풀면서 let을 통해 선언해준 값을 어느 위치에 놓느냐에 따라 문제에서 원하는 조건의 통과 여부가 달라지는 것을 보고 왜 그렇게 되는 걸까라는 생각을 많이 했었는데, 이번 주차 강의를 듣고 그동안의 의문점이 해결되었다 :)

첫 주차에는 막막하기만 했던 Pre Course 과정도 벌써 5주차를 향해 달려가고 있다. 차근차근 하나씩 주어진 과제들을 성실히 해내서 Pre Course를 꼭 수료할 수 있도록 힘내자!

0개의 댓글