위의 도서를 읽고 정리하며 기술 면접을 대비하는 글입니다.
38쪽
배열 자체도 하나의 객체여서 키/프로퍼티 문자열을 추가할 수 있지만 추천하고 싶지 않다. 그렇게 해야 한다면 객체를 대용하고 배열 원소의 인덱스는 확실히 숫자만 쓰자.41쪽
문자열은 불변 값Immutable이지만 배열은 가변 값Mutable이다. 따라서 문자열 메서드는 그 내용을 바로 변경하지 않고 항상 새로운 문자열을 생성한 후 반환한다.
45쪽
두 메서드는(num.toFixed(), num.toPrecision()) 숫자 리터럴에서 바로 접근할 수 있으므로 굳이 변수를 만들어 할당하지 않아도 된다. 하지만 .이 소수점일 경우엔 프로퍼티 접근자Accessor가 아닌 숫자 리터럴의 일부로 해석되므로 .연산자를 사용할 때는 조심하자.
<문자열>
let exampleStr = "abc";
function reverse01(str) {
let reversedStr = str.split("").reverse().join("");
return reversedStr
}
// 특수 문자, 멀티바이트 문자가 섞여 있는 경우는 통하지 않음
// [참고](https://github.com/mathiasbynens/esrever)
console.log(reverse01(exampleStr)) // "cba"
function reverse02(str) {
let reversedStr = ""
for (i=(str.length-1);i>=0;i--) {
reversedStr = reversedStr.concat(str[i])
}
return reversedStr
}
console.log(reverse02(exampleStr)) // "cba"
<문자열 배열>
let arrayStr = ["a", "b", "c"];
function reverse01(arr) {
arr.reverse()
return arr
}
console.log(reverse01(arrayStr)) // ['c', 'b', 'a']
function reverse02(arr) {
Array.prototype.reverse.call(arr);
return arr
}
console.log(reverse02(arrayStr)) // ['c', 'b', 'a']
항상 컴퓨터 언어는 소스 코드를 치면서 무언가를 구현하는 데에 필요한 것만 배웠었는데,
이렇게 언어의 문법을 샅샅이 파보는 것도 나름 재밌다.
마치 영어 문법에서의 예외적인 경우 그리고 독일 문법에서의 명사 성별로 관사가 달라지는 문법과 같은 그런 규칙들을 새롭게 배우는 느낌이라 흥미롭다.
지금은 이런 걸 배운다고 해서 큰 도움이 되지는 않을 것이지만,
내 생각에는 이렇게 자바스크립트의 작동 원리를 파악한다면 프로젝트 중, 또는 코드를 작성 중에 발생하는 여러 SyntaxError, TypeError 등이 발생하는 원인을 구글링하지 않고 금방 파악할 수 있을 것 같은 느낌이 든다.