2012-03-05 3 views
4

좀 컴파일 커피 스크립트 코드를 찾고 있었어요, 내가 정말 이상한 생각에 다음과 같이,주의 :자바 스크립트 또는 대입 연산자를

var current, x = 8; 
current = this._head || (this._head = x); 

이 실행 후를, 전류의 값이 8. 그 방법으로 판단하면 || 논리 연산자가 작동하면, 왼쪽부터 먼저 평가할 것으로 기대했을 것입니다. 왼쪽에 'undefined'를 얻은 후 오른쪽으로 이동하여 this._head에 8을 지정합니다. 이후에는 true를 반환하지만이 부분은 그다지 중요하지 않습니까? 어떻게 되돌아 가서 "현재"변수에 영향을 미칠지 모르겠다. 어떤 도움을 주시면 감사하겠습니다.

+0

OH에 값을 할당 8! 방금 운영자 우선 순위에 신경 쓰고 있다는 것을 깨달았습니다. || 연산자는 모든 값이 현재에 할당되기 전에 발생합니다. 나는 본질적으로 current = this._head를 둘러싼 괄호를 상상했다. 모두에게 감사드립니다! – elju

답변

1

|| 연산자는 값이 이 아닌이 반환됩니다. 아마 말을하는 데 도움이

current = this._head || (this._head = x) 

current = this._head ? this._head : (this._head = x); 

또는

로 기록 될 수
current = this._head; 

if(!current) 
    current = this._head = x; 
0

당신은 expresion 사용할 수 있습니다

var current=this._head ? this._head : (this._head = x); 
1
  1. 연산자는 "truthy"이면 왼쪽면을 반환하고 그렇지 않으면 오른쪽면을 반환합니다. 그것은 부울 true/false에 표현을 캐스팅하지 않습니다!
    • undefined || (this._head = x) 반환 할당 연산자는 값을 반환
  2. 오른쪽! 상기 예
  3. 제 할당 연산자에
    • this._head = x 복귀 8은 가변 current
관련 문제