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
 

Recently uploaded

Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 

Recently uploaded (6)

Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 

자바스크립트 핵심 가이드

  • 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) 유용하지 않고 매우 혼동