출처 : http://www.jakartaproject.com/board-read.do?boardId=javascripttip&boardNo=119681533125923&command=READ&t=1196858804183


질문) alert("" == 0) ;

        이렇게 하면 true , false 둘중 어느것이 나올까요?


  답은 true 입니다. 이상하지 않나요?



  if("" == 0 ) // with casting

  if("" === 0 )  // without casting

  즉 ""이 형변환이 되어 0으로 되서 true로 되었습니다.


  또  alert("" === 0) ;  이면  false가 됩니다.


 그리고 ""이 형변환해서 0이 된 이유는 아래와 같습니다.


 자바스크립트에서 null과 undefined의 차이점을 알아야 하는데요


In JavaScript, undefined means a variable has been declared but has not yet been assigned a value, such as:



var TestVar;
alert(TestVar);                   //shows undefined
alert(typeof TestVar);          //shows undefined


null is an assignment value. It can be assigned to a variable as a representation of no value:



var TestVar = null;
alert(TestVar);             //shows null
alert(typeof TestVar);    //shows object


From the preceding examples, it is clear that undefined and null are two distinct types: undefined is a type itself (undefined) while null is an object.

Unassigned variables are initialized by JavaScript with a default value of undefined.

JavaScript never sets a value to null. That must be done programmatically.

As such, null can be a useful debugging tool. If a variable is null, it was set in the program, not by JavaScript.



null values are evaluated as follows when used in these contexts:

Boolean: false
Numeric: 0
String: “null”


undefined values are evaluated as follows when used in these contexts:

Boolean: false
Numeric: NaN
String: “undefined”


=============================================================================

----------------------------------------------------------------
 달팽이 
 
 이것도 궁금한데요.
undefined 를 확인할때
if(obj == undefined || obj == "undefined"){ ... }
이런식으로 체크를 해야하나요?
어떻게 보면
if(obj == null || obj == "null"){ ... }
이것과도 같은데 말이죠.
사이트 돌아다 보면 이런코드를 종종 보는데, 이것이 필요한건지..
----------------------------------------------------------------
 
 GoodBug   
undefined 체크는 다음과 같이 하세요
if (object === undefined)
혹은
if (typeof object == 'undefined')
 
null 비교는
if (object == null)을 해도 되지만 확실히 하기 위해서는
if (object === null)을 하는것이 좋습니다
=== 은 값 뿐만 아니라 type 까지 비교해주는겁니다
----------------------------------------------------------------
출처 : http://www.jakartaproject.com/article/javascripttip/119346308726768

1. 변수는 로컬에 명시적으로 정의한다.
함수내에서 사용되는 지역 변수가 있다면 명시적으로 var 표시를 해주도록 합니다. 그렇지 않을 경우 브라우저는 상위 scope를 모두 뒤져서 상위에 해당 변수가 정의되어있는지 확인합니다.

 

2. 가능하다면 일단 캐싱한다.
DOM은 느리므로 가급적이면 DOM을 호출하는 횟수를 줄입니다. 반복적으로 document.body.all 등이 쓰여야 할 경우 document.body.all 를 다른 변수로 캐싱해둡니다. Array 등에서 array.length 같은 것을 반복문에서 사용해야 할 경우 var len = array.length 등과 같이 array.length 를 캐시해서 사용합니다. 함수 내에서 자주 사용되는 전역함수의 경우 지역 변수로 캐싱해서 사용하는 것이 좋습니다.

 

3. with 키워드의 사용은 피합니다.
JScript 에서의 with 키워드 사용은 scope를 하나 더 정의하는 것과 비슷한 비용이 듭니다.

 

4. 문자열을 많이 다루어야 할 경우에는 배열에 넣고 join 하는게 빠릅니다.
JavaScript에서는 자동으로 효율적인 코드로 변경하지만 JScript는 못합니다. 그래서 이런 식의 StringBuffer를 구현해줘야 빨라집니다.

 

5. eval은 무척이나 비용이 높은 명령입니다.
가급적이면 사용을 피하는게 좋습니다.

 

6. 가능하다면 closure를 피하세요.
closure는 매우 강력하기는 하지만 동시에 매우 위험하기도 합니다. 주의깊게 다루어야 할 뿐더러 최근에 패치가 되기 전까지 JScript는 DOM에 사용된 closure에 대해서 메모리 누수 현상이 있었습니다(패치 되지 않았거나 IE6 미만의 버전을 사용한다면 여전히 존재할 것입니다).

 

7. 프로퍼티 접근 함수는 사용하지 마세요.
객체지향 측면에서는 훌륭하지만 JScript로서는 끔찍합니다(헉… 이거 프레임웍에 썼는데…).


원문보기
IE + JavaScript Performance Recommendations - Part 1
IE+JavaScript Performance Recommendations Part 2: JavaScript Code Inefficiencies
IE+JScript Performance Recommendations Part 3: JavaScript Code Inefficiencies


FROM http://mygony.com/archives/1184

+ Recent posts