■ Javascript

[자바스크립트] Javascript를 기초부터 시작해보자! (5)

1. 논리연산자
자바스크립트에서는 논리연산자가 특별하게 사용된다.
다음 코드를 보자.

var a = true;
var b = “hello”;
var c = 0;
var d = null;
var e = “”;

var result = a || b;
var result2 = b && c;
var result3 = c && d;
var result4 = d || a && b;
var result5 = a && b || c;
var result6 = e || a;

각각의 result값은 어떻게 될까?

논리연산자를 일반 변수에 사용한 것이 이상하게 보일 수 있다.
하지만 자바스크립트에서는 이것이 허용되며 다른 언어와는 다른 특별한 의미도 갖고 있다.

각 결과는 다음과 같다.

result = true;
result2 = 0;
result3 = 0;
result4 = “hello”;
reulst5 = “hello”
result6 = true;

이것을 보고 유추를 할수 있는 것은 다음과 같다.

X || Y 에서 X가 거짓이면 Y를 반환한다. 그리고 X가 참이면 X를 그대로 반환한다.
X && Y 에서 X가 거짓이면 X를 반환한다. 그리고 X가 참이면 Y를 반환한다.

간단한 실제 예를 들어보겠다.

if (param && param.user && param.user.lv >= 100) {
//blabla
}

위 코드는 param이 존재하면 param.user를 반환하고, param.user가 존재하면 param.user.lv을 반환하고 100과 비교하여
참 혹은 거짓을 판별한다.
이때 param이 거짓이면 바로 거짓으로 판단하고 해당 if문을 수행하지 않는다.

다음으로 유추할 수 있는것은
거짓으로 구분하는 형태들이다.

자바스크립트에서는

null, undefined, 0, “”, false, NaN 은 모두 거짓으로 판단한다.

2. null 과 undefined
null은 명시적으로 데이터가 없다는 것을 의미한다.
반면 undefined는 데이터의 초기값이 정해지지 않았을때 할당된다.

두 값 모두 거짓을 의미한다.

var a = null;
var b;

if (a == b) {
// blabla
}

위와 같은 코드가 있을때 if문 로직을 수행할까?
정답은 수행한다 이다.

그렇다면

if (a === b) {
// blabla
}

위와같은 코드는 어떨까? if문 로직을 수행할까?
해당 로직은 수행하지 않는다.

== 비교와 === 비교가 있다.
== 비교는 비교하기전에 두 피연산자를 같은 타입으로 변환시킨 후 비교한다.
하지만 ===비교는 해당 타입 그대로 비교하기 때문에 타입과 값이 모두 같아야 한다.

3. for문

자바스크립트에서는 for in 문이 존재한다.

var persons = {a:1,b:2,age:24};
for (var key in persons) {
    console.log(key, persons[key]);
}

처럼 객체또한 for문을 돌릴 수 있다.

하지만 어쩔수 없는 상황이 아니라면 for in문은 자재하도록 하자.
그 이유는 뒤에서 다시 알아보도록하자 일단
성능이 급격히 저하된다는 사실을 인지하면된다.

또한 자바스크립트에서는 최대한 a.b.c.d.e 와같은 접근을
var f = a.b.c.d.e;
로 해놓고 f로 접근 하는 것이 좋다.
이또한 비슷한 이유이다.

Standard

댓글 남기기