문제
임의의 값을 입력받아 타입을 리턴해야 합니다.
출력
- string 타입을 리턴해야 합니다.
1
ex) 'string', 'number', 'boolean', 'object', 'array', 'undefined', 'null', 'function'
입출력 예시
let output = getType('hello');
console.log(output); // --> 'string'
output = getType(10);
console.log(output); // --> 'number'
output = getType(true);
console.log(output); // --> 'boolean'
output = getType({ name: 'Steve' });
console.log(output); // --> 'object'
output = getType([100, 200, 300]);
console.log(output); // --> 'array'
아직 부족한 나의 답:
function getType(anything) {
let result = '';
if (Array.isArray(anything) === true){
result = 'array';
} else if(anything === null){
result = 'null';
} else{
result = typeof(anything);
}
return result
}
다른 효율적인 방법도 분명 존재한다..하지만 나의 실력을 향상을 위해서 오로지 내머리 속으로만 풀었긔..
typeof가 어떤 type으로 결과 값을 리턴하는지 확인한 후에, 쉽게 생각했다. 이거 그냥 typeof쓰면 다 되는거 아닌가 ?
역시나 내 생각대로 안됬다 예상했다.
return typeof(anything)
typeof는 array와 null을 , 'object' 라는 결과 값을 리턴
typeof(arr) , typeof(null). -> "object"
Learning Point
1. Array.isArray()
Array.isArray(obj)
객체가 Array 라면 True , 아니라면 False를 반환.
ex) Array.isArray(anything)
2. == 와 ===
== : Equal Operator , ===: Strict Equal Operator 라고한다.
== 는 a와 b 값만 같은지 비교한다. 같으면 True 다르면 False
ex) let a = 1 과 let b = '1'(b는 string 타입) 은 ==로 비교 했을때, True이다.
=== 는 값과 값의 타입이 모두 같을때만 , True를 반환한다.
ex) let a = 1 과 let b = 1 은 ===로 비교 했을때, True이다.
3. undefined 와 null
undefined는 변수를 선언하고 값을 항당하지 않은 상태. (자료형이 없는 상태 ( string, int 등 특정 타입이 없는상태 ))
null은 변수를 선언하고 빈 값을 할당한 상태. (의도적으로 비어있는 상태)
undefined는 원시값(Primitive Type)으로, 선언한 후에 값을 할당하지 않은 변수나 값이 주어지지 않은 인수에 자동으로 할당된다. 이 값은 전역 객체의 속성 중 하나로, 전역 스코프에서의 변수이기도 하다. 따라서 undefined 변수의 초기 값은 undefined 원시 값이다.
null은 원시값(Primitive Type) 중 하나로, 어떤 값이 의도적으로 비어있음을 표현한다. undefined는 값이 지정되지 않은 경우를 의미하지만, null의 경우에는 해당 변수가 어떤 객체도 가리키고 있지 않다는 것을 의미한다.