Javacript는 논리 연산자 및에 대해 단락 평가 를 사용합니다 . 그러나, 또는 값 대신 실행을 중단 한 마지막 값의 결과를 반환한다는 점에서 다른 언어와 다릅니다 .||
&&
true
false
다음 값은 JavaScript에서 허위로 간주됩니다.
- 그릇된
- 없는
""
(빈 문자열)
- 0
- 난
- 찾으시는 주소가 없습니다
연산자 우선 순위 규칙을 무시하고 간단하게 유지하기 위해 다음 예제는 평가를 중단 한 값을 보여주고 결과로 반환됩니다.
false || null || "" || 0 || NaN || "Hello" || undefined // "Hello"
처음 5 개의 값 NaN
은 허위이므로 첫 번째 진실한 값을 충족 할 때까지 왼쪽에서 오른쪽으로 모두 평가됩니다 "Hello"
. 전체 표현식이 사실이되므로 더 높은 값은 평가되지 않고 "Hello"
표현식의 결과로 반환됩니다. . 마찬가지로이 경우 :
1 && [] && {} && true && "World" && null && 2010 // null
처음 5 개의 값은 모두 진실이며 첫 번째 잘못된 값 ( null
)을 충족 할 때까지 식을 거짓으로 만들어 2010
더 이상 평가되지 않으며 null
식의 결과로 반환됩니다.
당신이 주신 예제는 JavaScript의이 속성을 사용하여 할당을 수행하는 것입니다. 일련의 값 중 첫 번째 진실 또는 허위 가치를 얻는 데 필요한 모든 곳에서 사용할 수 있습니다. 이 코드는 아래의 값을 할당합니다 "Hello"
으로 b
대신하는 경우 - 다른 검사를하고, 그것은 더 쉽게 기본 값을 할당 할 수있다.
var a = false;
var b = a || "Hello";
아래 예제를이 기능의 악용이라고 부를 수 있으며 코드를 읽기가 더 어렵다고 생각합니다.
var messages = 0;
var newMessagesText = "You have " + messages + " messages.";
var noNewMessagesText = "Sorry, you have no new messages.";
alert((messages && newMessagesText) || noNewMessagesText);
경고 내에서 우리 messages
는 거짓 인지 확인 하고, 그렇다면, 평가하고 반환하고 noNewMessagesText
, 그렇지 않으면 평가하고 반환 newMessagesText
합니다. 이 예제에서는 거짓이므로 noNewMessagesText에서 멈추고 경고 "Sorry, you have no new messages."
합니다.
$f=$a or $f=$b or $f=$c; // etc
. PHP는 동일한 작업을 수행하는||
연산자와 연산자 를 모두 가지고 있습니다or
. 그러나or
평가 후 할당하는 동안이||
되기 전에 평가된다. 이것은 또한 당신에게 멸망 스타일을 제공합니다$a=getSomething() or die('oops');