자바스크립트는 왜 그 모양일까 (1)

dorazi·2021년 11월 19일
post-thumbnail

1장 이름

  • 자바스크립트는 변수 이름의 길이에 제한을 두지 않는다는 장점이 있다. 그러므로 가능하면 이름만 보고 무엇인지 짐작할 수 있도록 만드는게 좋다

이름에 _ , $, 숫자를 쓰는것이 좋은가?

  • 자바스크립트는 _(밑줄) 이나 $(달러) 기호로 이름을 시작하거나 끝낼 수 있고 숫자로 끝낼 수 있다. _로 시작하거나 끝나는 이름들은 일반적으로 public 속성이나 전역 변수를 의미하지만 프로그램을 제대로 작성했다면 이런 변수들은 전부 private일 것이므로 사용하지 않는것이 바름직하고 $ 기호를 사용했을때는 겹치지 않는 이름을 사용할 수 있다고 보장을 받을 수 있지만 $ 기호는 코드 생성기나 트랜스파일러, 매크로 처리기에서 사용할 목적으로 사용되었기 때문에 사용하지 않는 것이 좋다.

  • 이름의 숫자가 들어가는 경우는 개발자가 이름에 대해서 충분히 고민하지 않았다는 방증이다.

  • 이름에 여러 개의 단어를 사용할때 공백 문자가 허용되지 않아 여러 개의 단어를 어떠게 표기하느냐에 대한 의견이 나뉘는데 한쪽은 각 단어의 첫 번째 문자를 대문자로 표기하는 카멜케이스, 한쪽에서는 각 단어를 _로 연결해야 한다고 하고 다른 한쪽은 구분 없이 모든 단어를 이어서 표기하자고 하고있다고 한다.

  • 위 논쟁은 아직까지도 이어져 오고있고 저자는 셋다 틀린 방법이라 생각하고 옳은 방법은 단어를 구분하기 위해 공백을 사용하는 것인데 현재 프로그래밍 언어에서는 공백을 허용하지 않기 때문에 다음 세대 언어에서는 공백을 허용해 가독성을 더 향상시켰으면 한다고 한다. 그때까지는 _ 를 사용하는 것이 좋을 것 같다고 한다. 이유는 그렇게 하면 다음 세대 언어에서 공백으로 바꾸기도 훨씬 편할 것이 때문이라 한다.

자바스크립트에서 모든 함수 이름이 소문자로 시작해야하는 이유

  • 자바스크립트의 모든 이름은 반드시 소문자로 시작해야한다. 이는 자바스크립트의 new 연산자 문제 때문이다.
  • 함수 호출문이 new로 시작하면 해당 함수는 생성자로서 호출되고 그렇지 않으면 함수로서 호출된다.
  • 생성자를 잘못된 방식으로 호출하면 에러가 발생할 수 있는데 생성자와 함수는 겉으로 완전히 똑같아 보여서 new를 써야해는데 쓰지 않은 경우 혹은 반대로 잘못 사용한 new로 인해 발생한 문제를 자동으로 감지할 방법이 없다.
  • 그래서 한가지 약속을 했는데 그것이 모든 생성자 함수는 대문자로 시작되어야하고 그렇지 않은 모든 경우에는 소문자로 시작되어야한다는 약속이다.
  • 저자가 제시하는 더 믿을 만한 해결책은 new를 사용하지 않는 것이다.
  • new를 사용하지 않으면 대문자를 쓸일이 없다는 것이다.

예약어

abstract
arguments
boolean
break
byte
case
catch
char
class
const
continue
debugger
default
delete
do
double
else
enum

eval
export
extends

false
final
finally
float
for
function
goto
if
implements
import
in
instanceof
int
interface
let
long
native
new
null
package
private
protected
public
return
short
static
super

switch
synchronized
this
throw
throws
transient
true
try
typeof
var
void
volatile
while
with
yield

*는 ES6에서 추가된 예약어

  • 위 목록을 기억해야한다 자바스크립트에서 사용하고있는 예약어로 목록에 있는 단어들로 변수의 매개변수 이름으로 사용해서는 안된다.
profile
프론트엔드 개발자

0개의 댓글