는 때때로이 같은 자바 스크립트 코드 무언가 참조 :자바 스크립트에서 초기화 객체는 || 운영자
var myObj = myObj || {};
그럼, 실제로 여기 일이? 나는 가정한다 || 연산자는 true 또는 false를 반환하지만 올바르지 않습니다.
는 때때로이 같은 자바 스크립트 코드 무언가 참조 :자바 스크립트에서 초기화 객체는 || 운영자
var myObj = myObj || {};
그럼, 실제로 여기 일이? 나는 가정한다 || 연산자는 true 또는 false를 반환하지만 올바르지 않습니다.
연산자는 왼쪽 피연산자가 true로 평가되면 반환하고 그렇지 않으면 오른쪽 피연산자를 계산하여 반환합니다. 즉, a || b
은 a ? a : b
과 같습니다. 단, a
은 한 번만 평가됩니다.
myObj가 이미 정의되어 있지 않으면 초기화됩니다.
|| 단락 회로 운영자입니다. 첫 번째 피연산자가 true로 평가되면 두 번째 피연산자는 평가되지 않습니다.
따라서 JS a || b
는 # a ?? b
경우 myObj
미정이거나 널 후 그것을 경우
너무 myObj
인 빈 객체 중 하나를 myObj로를 생성 ||
오른쪽의 표현식을 평가 C와 같은 무언가 myObj로 난 당신이 무슨 뜻인지 이해를 바랍니다
null의 경우는 null 또는 빈 객체가 아닌
또한 'myObj'의 값이 false 또는 0 또는 NaN이거나 빈 문자열 인 경우 변수에 새 객체가 지정됩니다. ** ** 정의되지 않았거나 null이 아닙니다. 자바 스크립트에는 6 가지 오류가 있습니다. –
@Ray Toal : 추가해 주셔서 감사합니다. – Fender
는 OR 연산 (||) 것 첫 번째 비어 있지 않은/거짓 매개 변수를 반환합니다. myObj로는 허위 또는 null의 경우, 지정된 경우
이, 그것은 빈 개체로 설정됩니다 당신은 객체를 얻기 위해이 구조를 사용할 수 있습니다
을합니다 ({} 괄호는 객체를 생성하는 데 사용됩니다) null
, undefined
등이 아닙니다.이 코드는 나중에 객체로 사용해야하는 코드에서 myObj
을 사용하는 경우에 사용됩니다. 어떤 이유로이 줄 앞에 myObj
이 정의되지 않은 경우 다시 할당하면 undefined
또는 null
으로 남게됩니다.이 경우 {}
이 할당됩니다.
:
// If the object is already defined
if (myObj)
var myObj = myObj;
// It was undefined or null, so assign an empty object to it.
else
var myObj = {};
가 이해하기 || operator, 우선 기본 예제를 살펴 보겠습니다. 막대 falsy 간주하는 경우이 경우
var bar = false,
foobar = 5,
foo = bar || foobar; // foo = 5
는 푸 만는 foobar의 값이 할당 될 다음과 같다 : 논리 OR 연산자는 정의 된 변수에 대한 디폴트 값을 제공하는데 사용될 수있다. 위증 된 값은 0, 거짓, 정의되지 않음, null, NaN 또는 비어있는 것으로 간주 될 수 있습니다 (예 : "").
+1 또한 JavaScript에서 * null 병합 연산자 *라고합니다. http://stackoverflow.com/questions/476436/null-coalescing-operator-for-javascript/476445#476445 – naveen
아니요, C#의 널 통합 연산자 ('??')에 대한 대체 *. :)''널 병합 오퍼레이터 (null coalescing operator) '라고 불리는''||' '을 결코 들어 본 적이 없습니다. 항상 "논리 또는"연산자였습니다. – cdhowie
이 동의했습니다. OP의 이전 질문에서 그는 ASP.NET 배경에서 왔으며 왜이 설명을했는지. – naveen