연산 자 & & 의 세 가지 다른 차원

1877 단어
연산 자 는 세 개의 서로 다른 차원 에서 이해 할 수 있다.
1 층 이해:
작업 수가 모두 불 값 일 때 '&' 는 두 값 에 대해 불 과 (AND) 작업 을 수행 합 니 다.
x==0 && y==0 //    x y  0 ,   true

관계 연산 자의 우선 순위 가 '&' 보다 높다.
2 층 이해:
'& &' 는 실제 값 과 가짜 값 을 불 과 (AND) 로 조작 할 수 있 습 니 다. (가짜 값 은 false, null, undefined, 0, NaN 과 ') 입 니 다. JS 에서 불 값 을 사용 하고 자 하 는 모든 곳 에서 표현 식 과 문 구 는 실제 값 이나 가짜 값 으로 취급 하기 때문에 실제' & '는 항상 true 와 false 로 돌아 가지 않 습 니 다.
null && true // =>null:        ,     ,       
true && (5 - 3) // =>2:       ,      ,       

3 층 이해:
연산 자가 진짜 값 이나 가짜 값 을 되 돌려 주 려 고 할 때 왼쪽 연산 수의 값 에 따라 두 가지 연산 상황 이 발생 합 니 다. 연산 자 는 먼저 왼쪽 연산 수의 값 을 계산 합 니 다. 만약 계산 결과 가 가짜 값 이 라면 전체 표현 식 의 결과 도 가짜 값 입 니 다. 이때 & & "왼쪽 연산 수의 값 을 간단하게 되 돌려 주 고 오른쪽 조작 수의 값 을 계산 하지 않 습 니 다. 왼쪽 조작 수가 진짜 값 이 라면"& & "오른쪽 동작 수의 값 을 계산 하고 전체 표현 식 의 계산 결과 로 되 돌려 줍 니 다."
var o = {x:1};
var p = null;
o && o.x; // =>1 o   ,  o.x  
p && p.y; // =>null: p   ,    ,     p.y

"& &" 의 행 위 는 때때로 "단락" 이 라 고 부 릅 니 다. 우 리 는 많은 코드 들 이 이러한 특성 을 이용 하여 조건 부 로 코드 를 실행 하 는 것 을 볼 수 있 습 니 다. 예 를 들 어 아래 두 줄 의 코드 는 완전히 등가 입 니 다.
if(a == b) stop();
(a == b) && stop();//        

지식의 연장
연산 자 '| |' 과 '&' 도 마찬가지 로 복잡 한 행 위 를 한다.예비 표현 식 에서 첫 번 째 진가 표현 식 을 선택 하 는 데 사용 합 니 다:
//    a     ,   ,  a,   a         b
//   b     b,    5
var max = a || b || 5;

이 용법 은 함수 에서 매개 변수 에 기본 값 을 제공 할 수 있 습 니 다.
function copy(o, p) {
p = p || {}; //        p    ,         
// ...
}

연산 자 우선 순위
같은 우선 순위 의 연산 자, 연산 순 서 는 결합 방향 에 의 해 결정 된다.간단하게 기억 하면:! >산술 연산 자 > 관계 연산 자 > & > | > 할당 연산 자

좋은 웹페이지 즐겨찾기