SlideShare a Scribd company logo
1 of 13
자바스크립트 핵심 가이드
부록-B, 나쁜점들
01. ==
 자바스크립트에는 비교연산자로 === / !== 와 == / != 이 있다.
 두개의 연산자들의 차이는 같음을 정의하는 기준이 서로 다르다.
 ===(일치연산자, is strictly equal to) 같음을 정의하는 기준이 매우 엄격
 ==(동등연산자, is equal to)두 피연산자가 동등한지, 타입변환 허용
02. WITH
 with문은 유효범위 체인을 임시로 변경하려 할때 쓰임
 with(객체){구문}
 with문은 엄격한 모드에서 사용할 수 없다.
 with문을 사용하는 자바스크립트 코드는 최적화하기 힘들고 with문을
사용하면 변수에 바인딩을 하기 어렵기 떄문에 사용하지 않은 코드에 비
해 현저히 느려진다.
03. EVAL
 eval함수는 문자열을 자바스크립트 컴파일러에 넘긴 후 그 결과를 실행
 문제점
 1. eval을 사용한 코드는 읽기 어렵다.
 2.eval을 사용하면 컴파일러를 사용해야 함으로 속도가 느려진다.
 3.보안의 문제를 일으킬 수 있는 코드라도 무조건 실행
 setTimeout과 setInterval 함수도 문자열 또는 함수를 인수로 취할 수 있
는데 이때 문자열 인수를 제공하면 eval 처럼 동작하므로 주의
04. CONTINUE
 continue문을 제거 했을때 성능이 항상 향상되었다.
05. 다음 CASE절까지 실행하는 SWITCH문
 switch case문 중 다음 case문 까지 계속 실행되는 경우 오류가 발생할
수 있으니 편리하더라고 사용하지 말아야 함.
06. 블록이 없는 문장
 if문이나 for문에서 한줄만 사용할시 따로 블록을 따로 쳐줄 필요가 없지
만 가독성이나 코드에 간결함을 위해서 블록을 나누자
If(ok)
t = true;
advance();
If(ok){
t = true;
advance();
}
If(ok){
t = true;
}
advance();
07. ++ --
 6번 블록이 없는 문장 처럼, 좀더 가독성을 높이기 위해서 증감 연산자를
사용하지 말아야 한다.
08. 비트 연산자
 정수형일 경우에 비트연산자는 빠르게 동작하지만 자바스크립트는 정수
형이 없고 부동소수점(실수)이기 때문에 비트연산자 사용시 정수로 변환
후 다시 실수형으로 바꾸기 때문에 속도가 느려진다.
09. 함수 문장 VS 함수 표현식
 함수 문장
 function foo() {}
 함수 표현식
 var foo = function foo () {}
 차이점
 함수 문장으로 선언을 하면 호출을 어디에서나 불러도 상관 없다.
 함수 표현식으로 선언하면 미리 정의하지 않고 호출하면 에러
 이러한 함수 문장의 사용은 함수를 사용하기 전에 반드시 선언해야 한다
는 요구사항을 경감, 구조를 엉성하게 만든다.
10. 데이터 타임 랩퍼
 자바스크립트는 숫자, 문자열, 불리언 데이터 타입을 지원할 뿐 만 아니
라 기본 데이터 타입을 둘러싸는 랩퍼들(Number, String, Boolean 클래
스)도 지원
 이러한 래퍼들은 완전히 필요가 없으며 때때로 혼란을 줄 수 있다.
11. NEW
 자바스크립의 new 연산자는 피연산자의 프로토타입 멤버들을 상속하는
객체를 생성하고 이 객체를 this에 바인딩하면서 피연산자를 호출
 new 연산자를 안쓰면 일반적인 함수 호출을 하게 되고 이때 this는 새로
운 객체가 아니라 전역객체에 바인딩
 new를 안 써도 컴파일 시나 실행 시에 어떠한 경고도 없다.
 new와 함께 사용하기 위해서 만든 함수의 이름은 각 단어의 첫 글자를
대문자로 표기해서 new를 생략한 실수를 찾을 수 있는 단서 제공
 저자는 new 연산자를 사용하지 않는것이 좋다라고 함.
12. VOID
 자바스크립트에서 void는 피연사자를 취한 후 undefined를 반환하는
연산자. void(0) 유용하지 않고 매우 혼동

More Related Content

What's hot

Effective C++ Chapter 1 Summary
Effective C++ Chapter 1 SummaryEffective C++ Chapter 1 Summary
Effective C++ Chapter 1 SummarySeungYeonChoi10
 
More effective c++ 2
More effective c++ 2More effective c++ 2
More effective c++ 2현찬 양
 
More effective c++ chapter1 2_dcshin
More effective c++ chapter1 2_dcshinMore effective c++ chapter1 2_dcshin
More effective c++ chapter1 2_dcshinDong Chan Shin
 
effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리Injae Lee
 
C++ 2학기 수행평가
C++ 2학기 수행평가C++ 2학기 수행평가
C++ 2학기 수행평가Jaehee Lee
 
Chapter8 상속과다형성(윤현성)
Chapter8 상속과다형성(윤현성)Chapter8 상속과다형성(윤현성)
Chapter8 상속과다형성(윤현성)Hyun Sung Yoon
 
[SwiftStudy 2016] 3장. 함수
[SwiftStudy 2016] 3장. 함수[SwiftStudy 2016] 3장. 함수
[SwiftStudy 2016] 3장. 함수Keunhyun Oh
 
Effective c++ 3
Effective c++ 3Effective c++ 3
Effective c++ 3현찬 양
 
More effective c++ 항목30부터
More effective c++ 항목30부터More effective c++ 항목30부터
More effective c++ 항목30부터Dong Chan Shin
 
[SwiftStudy 2016] 2장. Swift 타입 파트 1
[SwiftStudy 2016] 2장. Swift 타입 파트 1[SwiftStudy 2016] 2장. Swift 타입 파트 1
[SwiftStudy 2016] 2장. Swift 타입 파트 1Keunhyun Oh
 
Effective c++ chapter3, 4 요약본
Effective c++ chapter3, 4 요약본Effective c++ chapter3, 4 요약본
Effective c++ chapter3, 4 요약본Dong Chan Shin
 
보다 나은 웹 어플리케이션 설계
보다 나은 웹 어플리케이션 설계보다 나은 웹 어플리케이션 설계
보다 나은 웹 어플리케이션 설계Eb Styles
 

What's hot (14)

1 2 1
1 2 11 2 1
1 2 1
 
Effective C++ Chapter 1 Summary
Effective C++ Chapter 1 SummaryEffective C++ Chapter 1 Summary
Effective C++ Chapter 1 Summary
 
5 6 1
5 6 15 6 1
5 6 1
 
More effective c++ 2
More effective c++ 2More effective c++ 2
More effective c++ 2
 
More effective c++ chapter1 2_dcshin
More effective c++ chapter1 2_dcshinMore effective c++ chapter1 2_dcshin
More effective c++ chapter1 2_dcshin
 
effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리
 
C++ 2학기 수행평가
C++ 2학기 수행평가C++ 2학기 수행평가
C++ 2학기 수행평가
 
Chapter8 상속과다형성(윤현성)
Chapter8 상속과다형성(윤현성)Chapter8 상속과다형성(윤현성)
Chapter8 상속과다형성(윤현성)
 
[SwiftStudy 2016] 3장. 함수
[SwiftStudy 2016] 3장. 함수[SwiftStudy 2016] 3장. 함수
[SwiftStudy 2016] 3장. 함수
 
Effective c++ 3
Effective c++ 3Effective c++ 3
Effective c++ 3
 
More effective c++ 항목30부터
More effective c++ 항목30부터More effective c++ 항목30부터
More effective c++ 항목30부터
 
[SwiftStudy 2016] 2장. Swift 타입 파트 1
[SwiftStudy 2016] 2장. Swift 타입 파트 1[SwiftStudy 2016] 2장. Swift 타입 파트 1
[SwiftStudy 2016] 2장. Swift 타입 파트 1
 
Effective c++ chapter3, 4 요약본
Effective c++ chapter3, 4 요약본Effective c++ chapter3, 4 요약본
Effective c++ chapter3, 4 요약본
 
보다 나은 웹 어플리케이션 설계
보다 나은 웹 어플리케이션 설계보다 나은 웹 어플리케이션 설계
보다 나은 웹 어플리케이션 설계
 

Similar to 자바스크립트 핵심 가이드

[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java유리 하
 
More effective c++ Chap1~2
More effective c++ Chap1~2More effective c++ Chap1~2
More effective c++ Chap1~2Injae Lee
 
[스프링 스터디 3일차] AOP와 LTW
[스프링 스터디 3일차] AOP와 LTW[스프링 스터디 3일차] AOP와 LTW
[스프링 스터디 3일차] AOP와 LTWAnselmKim
 
Web Application Testing Patterns
Web Application Testing PatternsWeb Application Testing Patterns
Web Application Testing PatternsJune Kim
 
Rails style-guide-2
Rails style-guide-2Rails style-guide-2
Rails style-guide-2Yunho Jo
 
Deep dive functional thinking
Deep dive functional thinkingDeep dive functional thinking
Deep dive functional thinkingJeong-gyu Kim
 
Python 이해하기 20160815
Python 이해하기 20160815Python 이해하기 20160815
Python 이해하기 20160815Yong Joon Moon
 
Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수Park Jonggun
 
프론트엔드스터디 E03 - Javascript intro.
프론트엔드스터디 E03 - Javascript intro.프론트엔드스터디 E03 - Javascript intro.
프론트엔드스터디 E03 - Javascript intro.Young-Beom Rhee
 
0.javascript기본(~3일차내)
0.javascript기본(~3일차내)0.javascript기본(~3일차내)
0.javascript기본(~3일차내)Sung-hoon Ma
 
Effective java
Effective javaEffective java
Effective javaHaeil Yi
 

Similar to 자바스크립트 핵심 가이드 (20)

[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java
 
4-1. javascript
4-1. javascript4-1. javascript
4-1. javascript
 
More effective c++ Chap1~2
More effective c++ Chap1~2More effective c++ Chap1~2
More effective c++ Chap1~2
 
ES6-01
ES6-01ES6-01
ES6-01
 
Java tutorial
Java tutorialJava tutorial
Java tutorial
 
[스프링 스터디 3일차] AOP와 LTW
[스프링 스터디 3일차] AOP와 LTW[스프링 스터디 3일차] AOP와 LTW
[스프링 스터디 3일차] AOP와 LTW
 
C++ api design 품질
C++ api design 품질C++ api design 품질
C++ api design 품질
 
Javascript
JavascriptJavascript
Javascript
 
Web Application Testing Patterns
Web Application Testing PatternsWeb Application Testing Patterns
Web Application Testing Patterns
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Rails style-guide-2
Rails style-guide-2Rails style-guide-2
Rails style-guide-2
 
Deep dive functional thinking
Deep dive functional thinkingDeep dive functional thinking
Deep dive functional thinking
 
Python 이해하기 20160815
Python 이해하기 20160815Python 이해하기 20160815
Python 이해하기 20160815
 
Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수
 
프론트엔드스터디 E03 - Javascript intro.
프론트엔드스터디 E03 - Javascript intro.프론트엔드스터디 E03 - Javascript intro.
프론트엔드스터디 E03 - Javascript intro.
 
0.javascript기본(~3일차내)
0.javascript기본(~3일차내)0.javascript기본(~3일차내)
0.javascript기본(~3일차내)
 
7 8 1
7 8 17 8 1
7 8 1
 
Effective java
Effective javaEffective java
Effective java
 
React vac pattern
React vac patternReact vac pattern
React vac pattern
 
EC 789
EC 789EC 789
EC 789
 

자바스크립트 핵심 가이드

  • 2. 01. ==  자바스크립트에는 비교연산자로 === / !== 와 == / != 이 있다.  두개의 연산자들의 차이는 같음을 정의하는 기준이 서로 다르다.  ===(일치연산자, is strictly equal to) 같음을 정의하는 기준이 매우 엄격  ==(동등연산자, is equal to)두 피연산자가 동등한지, 타입변환 허용
  • 3. 02. WITH  with문은 유효범위 체인을 임시로 변경하려 할때 쓰임  with(객체){구문}  with문은 엄격한 모드에서 사용할 수 없다.  with문을 사용하는 자바스크립트 코드는 최적화하기 힘들고 with문을 사용하면 변수에 바인딩을 하기 어렵기 떄문에 사용하지 않은 코드에 비 해 현저히 느려진다.
  • 4. 03. EVAL  eval함수는 문자열을 자바스크립트 컴파일러에 넘긴 후 그 결과를 실행  문제점  1. eval을 사용한 코드는 읽기 어렵다.  2.eval을 사용하면 컴파일러를 사용해야 함으로 속도가 느려진다.  3.보안의 문제를 일으킬 수 있는 코드라도 무조건 실행  setTimeout과 setInterval 함수도 문자열 또는 함수를 인수로 취할 수 있 는데 이때 문자열 인수를 제공하면 eval 처럼 동작하므로 주의
  • 5. 04. CONTINUE  continue문을 제거 했을때 성능이 항상 향상되었다.
  • 6. 05. 다음 CASE절까지 실행하는 SWITCH문  switch case문 중 다음 case문 까지 계속 실행되는 경우 오류가 발생할 수 있으니 편리하더라고 사용하지 말아야 함.
  • 7. 06. 블록이 없는 문장  if문이나 for문에서 한줄만 사용할시 따로 블록을 따로 쳐줄 필요가 없지 만 가독성이나 코드에 간결함을 위해서 블록을 나누자 If(ok) t = true; advance(); If(ok){ t = true; advance(); } If(ok){ t = true; } advance();
  • 8. 07. ++ --  6번 블록이 없는 문장 처럼, 좀더 가독성을 높이기 위해서 증감 연산자를 사용하지 말아야 한다.
  • 9. 08. 비트 연산자  정수형일 경우에 비트연산자는 빠르게 동작하지만 자바스크립트는 정수 형이 없고 부동소수점(실수)이기 때문에 비트연산자 사용시 정수로 변환 후 다시 실수형으로 바꾸기 때문에 속도가 느려진다.
  • 10. 09. 함수 문장 VS 함수 표현식  함수 문장  function foo() {}  함수 표현식  var foo = function foo () {}  차이점  함수 문장으로 선언을 하면 호출을 어디에서나 불러도 상관 없다.  함수 표현식으로 선언하면 미리 정의하지 않고 호출하면 에러  이러한 함수 문장의 사용은 함수를 사용하기 전에 반드시 선언해야 한다 는 요구사항을 경감, 구조를 엉성하게 만든다.
  • 11. 10. 데이터 타임 랩퍼  자바스크립트는 숫자, 문자열, 불리언 데이터 타입을 지원할 뿐 만 아니 라 기본 데이터 타입을 둘러싸는 랩퍼들(Number, String, Boolean 클래 스)도 지원  이러한 래퍼들은 완전히 필요가 없으며 때때로 혼란을 줄 수 있다.
  • 12. 11. NEW  자바스크립의 new 연산자는 피연산자의 프로토타입 멤버들을 상속하는 객체를 생성하고 이 객체를 this에 바인딩하면서 피연산자를 호출  new 연산자를 안쓰면 일반적인 함수 호출을 하게 되고 이때 this는 새로 운 객체가 아니라 전역객체에 바인딩  new를 안 써도 컴파일 시나 실행 시에 어떠한 경고도 없다.  new와 함께 사용하기 위해서 만든 함수의 이름은 각 단어의 첫 글자를 대문자로 표기해서 new를 생략한 실수를 찾을 수 있는 단서 제공  저자는 new 연산자를 사용하지 않는것이 좋다라고 함.
  • 13. 12. VOID  자바스크립트에서 void는 피연사자를 취한 후 undefined를 반환하는 연산자. void(0) 유용하지 않고 매우 혼동