그리고 Immutability, HTML 특수 문자 코드
이번 주도 역시..(?) 온라인 세션을 듣지 못했다. 세션 들으려고 회사에 남는 건데, 자꾸만 일을 하게 되어서, 매번 포기했다. 그래도 이번 주는 한 번씩 배우고, 문제도 풀어봤던 메소드에 대한 내용이라 과제는 큰 무리 없이 풀 수 있었다. 다만 Array 메소드 내용 중 callback에 대한 건 기억이 안 나서..(이해하기 어려웠다는 사실만 기억할 뿐) 다음 주에 세션 영상을 들으면서 다시 학습해야겠다!
이번 주는 String과 Array의 메소드를 중심으로 공부했다. 엑셀 공부할 때도 느낀 거지만, 모든 메소드를 외울 필요 없이 '언어가 이런 것도 할 수 있다'는 그림만 그릴 수 있으면 되는 것 같다. 어차피 구글링하면 금방 나오니까..
새로 배운 것 중에서 흥미로운 것들 즉, 잊어버릴 것만 같은 내용을 정리해 보겠다.
substring 메소드와 slice 메소드는 arguments에 넣은 start index와 end index 사이의 문자열을 리턴한다. 다만, 몇 가지 차이점이 있다
var str = 'abcdefg';
console.log(str.substring(0, 3)); // 'abc'
console.log(str.substring(3, 0)); // 'abc'
console.log(str.substring(-1, 4)); // 'abcd', 음수는 0으로 취급
console.log(str.substring(0, 10)); // 'abcdefg', index 범위를 넘으면 마지막 index로 취급
var str = 'The quick brown fox jumps over the lazy dog.'; console.log(str.slice(31)); // "the lazy dog."
console.log(str.slice(4, 19)); // "quick brown fox"
console.log(str.slice(-4)); // "dog.", 음수는 뒤에서부터 시작
console.log(str.slice(-9, -5)); // "lazy"
여기서 포인트는, 음수를 서로 다르게 취급한다는 점이다. substring 메소드는 음수를 0으로 취급해서 맨 처음 문자열부터 리턴하지만, slice 메소드는 음수를 뒤에서부터 시작하는 것으로 취급한다.
모든 string 메소드는 immutable 즉, 원본이 변하지 않는다. 반대로 array 메소드는 mutable한 것도 있고, immutable한 것도 있다.
Immutability가 왜 필요한지 이해하고 싶어서 구글링해보니,
불변 객체는 객체를 복제할 때 객체 전체가 아니라 단순히 참조만 복사하고 끝난다. 참조는 보통 객체 그 자체보다 훨씬 작아서(전형적으로 포인터 크기), 메모리가 절감되며 프로그램의 성능에도 좋다. (...)
불변 객체는 멀티 스레드 프로그래밍에서도 유용하다. 데이터가 불변 객체에 저장돼 있다면 복수의 스레드에 의해서 특정한 스레드의 데이터가 변경될 우려없이 데이터에 접근할 수 있다. 즉, 배타 제어(mutual exclusion)를 할 필요가 없다. 쉽게 말해 불변 객체가 가변 객체보다 스레드 세이프(Thread-safe) 하다고 생각하면 된다.
고 한다. (출처: ko.wikipedia.org/wiki/불변객체)
mdn에서 string의 trim 메소드 설명을 읽다가 nbsp라는 단어가 나와서 무엇인지 궁금해 구글링을 해봤다.
정확히는 라는 HTML 특수 문자인데, 웹페이지에서 공백을 표시할 때 쓴다고 한다. HTML 웹 페이지에는 수많은 공백이 존재하는데, 웹 브라우저나 자바스크립트 엔진이 공백을 처리할 때 여러 개가 있으면 1개만 남겨두고 다 제거하기 때문에 를 반복 입력한다고 한다. (출처: sensechef.com/957)
어쩐지, space가 저 문자로 입력된 때가 몇 번 있다 했더니. 소소한 발견이 신기하고 재미있었다!
뿐만 아니라 더 많은 특수문자 코드도 흥미로웠고.
다음 주는 Number/Math 메소드와 git 사용법을 배운다. git을 사용하는 방법은 전에 한 번 배웠는데, 마치 내가 개발자 된 것 마냥 느껴져서 신났던 기억이 있다. 영화 속 엔지니어처럼 몇 글자 쓰고 엔터 몇 번 치면 알아볼 수 없는 영어가 주루룩 뜨는 그런 느낌적인 느낌! 다음 주 세션도 기대된다!