console.log(typeof NaN); -> Number
console.log([] == ![]) -> true
javascript는 내부적으로 빈배열일 경우 숫자로 강제 변환
[] == ![] // Array, Boolean + Array
0 == ![] // Numver, Boolean + Array
0 == false // Number, Boolean
0 == 0 // Number, Number
true
참조 : https://bugtypekr.tistory.com/53
const num = 01234;
숫자 맨앞 0을 붙이면 8진수로 계산
01234
8^4, 8^3, 8^2, 8, 1
-> 8^3 * 1 + 8^2 * 2 + 8 * 1 + 4 * 1 = 668
console.log(num); -> 668
참조 : https://velog.io/@sewa/9%EC%9B%94-23%EC%9D%BC-2%EC%A3%BC%EC%B0%A8-js-%EA%B3%BC%EC%A0%9C
console.log("hello" + + "world") - helloNaN
+"world" 숫자연산자가 되는데 내부에 문자열이 있어 NaN이 출력됩니다
"hello"+NaN -> helloNaN이 출력됩니다.!
console.log(+'111') - 111
+'111' 숫자형변환되서 문자열에서 숫자열로 바뀜 -> 111
console.log(+[]) - 0
+[] 빈배열은 false => 0의 값을 가지고 있어 숫자형변환 하면 0이나옴
console.log(+true) - 1
+true true는 숫자로 변환하면 1의값을 가지고 있습니다.
console.log([]+{}) - [object Object]
앞의 배열은 빈배열로 "" +{} 이렇게 셍각하면되고
+{} 암묵적으로 내부에서 형변환이 진행되 [object Object] 값이 출력
console.log(parseInt(null))
parseInt는 숫자로 변환시켜주는 메소드입니다 null은 값이 없으므로 NaN로 출력됨
console.log(parseInt(null,24))
24진법으로 null에 n부분만 보고 23이 나온거 같습니다?!
https://stackoverflow.com/questions/6459758/parseintnull-24-23-wait-what
console.log(Math.min()<Math.max())
예상? 두값이 비어 있어 최대값과 최소값이 비어 있으므로 false가 나온다 생각!
console.log([,,,].length)
배열안에 값은없지만 (,)으로 나누어 져있어 제생각으로 마지막 ,뒤에는 값이 없으므로 길이가 3이나오거 같다고 생각합니다!( , )가 문자열이라 생각하고 하면 3개가 나올거 같다?
console.log([,,,].join()) ,,
가운데 , 로 기준잡고 양쪽 , 를 문자열로 인식해서 결과가 ,,가 나온가 같다고 생각!
const a = [1,2,3];
a[1]='perl';
console.log(a);
a는 상수입니다 상수는 변하지 못하는 값인데 하지만 배열은 참조값이라 변수에 주소값을 할당합니다. 그래서 배열로 변경하는것은 가능하므로
console.log(a) => [1,'perl',3] 이 출력됩니다.
const b = [1,3,5] // 상수 b에 배열 1,3,5가 있습니다
b[-1] ='perl' // b[-1] 에서 -1의 의미는 인덱스 마지막 요소에 추가해주는것입니다
그러면 b[-2] 이것은 마지막요소에서 2번째에 추가해준다는 의미입니다!
참조 : https://ko.javascript.info/task/array-negative
console.log(b[-1]); // 그래서 마지막요소에 perl이 들어가 perl이 출력됩니다!
console.log(b[b.indexOf(-1)]) // indexOf는 배열 내부에서 특정 값의 위치를 찾는 메소드입니다
console.log(b[b.indexOf('나비')]) // 배열에 값이 없으면 -1을 출력합니다. -1 값은 perl이므로 perl출력이됩니다!
b = [1,3,5,-1:perl]