ECMAScript 일원 연산자

단일 연산자는 하나의 파라미터 만 있으며, 처리할 객체나 값입니다. 이들은 ECMAScript에서 가장 간단한 연산자입니다.

delete

delete 연산자는 이전에 정의된 객체 속성이나 메서드에 대한 참조를 제거합니다. 예를 들어:

var o = new Object;
o.name = "David";
alert(o.name);	//출력 "David"
delete o.name;
alert(o.name);	// 출력 "undefined"

이 예제에서는 name 속성을 제거하여, 그에 대한 강제적인 참조 해제를 시키고, undefined(즉, 초기화되지 않은 변수의 값)로 설정합니다.

delete 연산자는 개발자가 정의하지 않은 속성과 메서드를 제거할 수 없습니다. 예를 들어, 다음 코드는 오류를 일으킵니다:

delete o.toString;

toString이 유효한 메서드 이름이더라도, 이 줄 코드는 toString() 메서드가 원시 ECMAScript 메서드이며 개발자가 정의한 것이 아님을 이유로 오류를 일으킵니다.

void

void 연산자는 어떤 값에도 undefined을 반환합니다. 이 연산자는 일반적으로 HTML의 <a> 요소에서 JavaScript 함수를 호출할 때, 출력되지 않아야 할 값을 피하는 데 사용됩니다. 이를 올바르게 수행하려면, 함수는 유효한 값을 반환하지 않아야 하며, 그렇지 않으면 브라우저는 페이지를 비우고 함수의 결과만 표시합니다. 예를 들어:

<a href="javascript:window.open('about:blank')">클릭하세요</a>

이 줄 코드를 HTML 페이지에 넣고, 링크를 클릭하면 "[object]"가 화면에 표시됩니다.TIY

이는 window.open() 메서드가 새로 열린 창의 참조를 반환하기 때문입니다. 그런 다음, 이 객체가 표시되려는 문자열로 변환됩니다.

이 효과를 피하기 위해 void 연산자를 사용하여 window.open() 함수를 호출할 수 있습니다:

<a href="javascript:void(window.open('about:blank'))">클릭하세요</a>

이는 window.open() 호출이 undefined을 반환하게 하여, 윈도우에 표시되지 않는 무효 값이 됩니다.

힌트:기억해 두세요, 반환 값을 가지지 않는 함수는 모두 undefined을 반환합니다.

전 증가/전 감소 연산자

C(와 Java)에서 직접 빌려온 두 연산자는 전 증가 연산자와 전 감소 연산자입니다.

전 증가 연산자는数值적으로 1을 더하는 것입니다. 형식은 변수 앞에 두 개의 플러스 기호(++)를 두는 것입니다:

var iNum = 10;
++iNum;

두 번째 줄 코드는 iNum의 값을 11로 증가시킵니다. 이는 실제로 ++iNum과 동일합니다:

var iNum = 10;
iNum = iNum + 1;

동일하게, 전 감소 연산자는数值적으로 1을 뺍니다. 형식은 변수 앞에 두 개의 마이너스 기호(--)를 두는 것입니다:

var iNum = 10;
--iNum;

이 예제에서는 두 번째 줄 코드가 iNum의 값을 9로 줄입니다.

前置运算자를 사용할 때 주의할 것은 증가와 감소 연산자가 표현식 계산 전에 발생한다는 점입니다. 다음 예제를 고려해 보세요:

var iNum = 10;
--iNum;
alert(iNum);	//출력 "9"
alert(--iNum);	//출력 "8"
alert(iNum);	//출력 "8"

두 번째 줄 코드는 iNum에 증감 연산을 수행하며, 세 번째 줄 코드는 결과("9")를 표시합니다. 네 번째 줄 코드는 다시 iNum에 증감 연산을 수행하며, 이번에는 프리픽스 증감 연산과 출력 작업이 동일한 문장에서 수행되어 "8"을 표시합니다. 모든 증감 연산이 수행되었음을 증명하기 위해 다섯 번째 줄 코드에서 또 "8"을 출력합니다.

산술 표현식에서 프리픽스 증감 연산자의 우선순위는 같기 때문에 왼쪽에서 오른쪽으로 계산해야 합니다. 예를 들어:

var iNum1 = 2;
var iNum2 = 20;
var iNum3 = --iNum1 + ++iNum2;	//等于 "22"
var iNum4 = iNum1 + iNum2;		//等于 "22"

이전 코드에서 iNum3은 22에 같으며, 표현식이 계산해야 하는 것은 1 + 21입니다. 변수 iNum4도 22에 같으며, 1 + 21입니다.

후 증감 연산자

C(또는 Java)에서 직접 빌려온 두 가지 연산자가 있습니다. 즉, 후 증감 연산자와 후 증감 연산자입니다.

후 증감 연산자는 값에 1을 더합니다. 변수 뒤에 두 개의 플러스 기호(++)를 두는 형식으로 표시됩니다:

var iNum = 10;
iNum++;

기대와 같이 후 증감 연산자도 값에서 1을 뺍니다. 두 개의 마이너스 기호(--)를 변수 뒤에 추가하는 형식으로 표시됩니다:

var iNum = 10;
iNum--;

두 번째 줄 코드는 iNum의 값을 9로 줄입니다.

프리픽스 연산자와 다른 점은 후缀 연산자가 표현식을 계산한 후에 증감 연산을 수행한다는 것입니다. 다음 예를 들어:

var iNum = 10;
iNum--;
alert(iNum);	//출력 "9"
alert(iNum--);	//출력 "9"
alert(iNum);	//출력 "8"

프리픽스 연산자의 예와 유사하게, 두 번째 줄 코드는 iNum에 증감 연산을 수행하며, 세 번째 줄 코드는 결과("9")를 표시합니다. 네 번째 줄 코드는 iNum의 값을 다시 표시하지만, 이번에는 증감 연산자를 동일한 문장에서 사용합니다. 증감 연산이 표현식 계산 이후에 수행되기 때문에 이 문장에서 표시된 숫자는 "9"입니다. 다섯 번째 줄 코드가 실행된 후, alert 함수는 "8"을 표시합니다. 이는 네 번째 줄 코드가 실행된 후 다섯 번째 줄 코드가 실행되기 전에 후 증감 연산이 수행된 것입니다.

산술 표현식에서 후 증감 연산자의 우선순위는 같기 때문에 왼쪽에서 오른쪽으로 계산해야 합니다. 예를 들어:

var iNum1 = 2;
var iNum2 = 20;
var iNum3 = iNum1-- + iNum2++;	//等于 "22"
var iNum4 = iNum1 + iNum2;		//等于 "22"

위의 코드에서 iNum3은 22에 해당하며, 이 표현식은 2 + 20을 계산합니다. 변수 iNum4도 22에 해당하지만, 증가와 감소 연산자는 iNum3에 값을 할당한 후에 계산됩니다.

일원적 증가와 감소 연산자

대부분의 사람들은 일원적 증가와 감소 연산자를 잘 알고 있으며, ECMAScript에서의 사용 방식은 고등학교 수학에서 배운 방식과 유사합니다.

일원적 증가는 본질적으로 숫자에 대한 어떠한 영향도 미치지 않습니다:

var iNum = 20;
iNum = +iNum;
alert(iNum);	// "20" 출력

이 코드는 숫자 20에 일원적 증가 연산자를 적용하면 여전히 20을 반환합니다.

일원적 증가는 숫자에 대한 작용은 없지만, 문자열에 대한 흥미로운 효과를 가집니다. 문자열을 숫자로 변환합니다.

var sNum = "20";
alert(typeof sNum);	// "string" 출력
var iNum = +sNum;
alert(typeof iNum);	// "number" 출력

이 코드는 문자열 "20"을 실제 숫자로 변환합니다. 일원적 증가 연산자가 문자열에 작용할 때, 그 계산 방식은 parseInt()와 유사하지만, 주요 차이점은 "0x"로 시작하는 문자열(16진수를 나타냄)에 대해서만 일원적 연산자가 십진수로 변환할 수 있다는 점입니다. 따라서 "010"을 일원적 증가 연산자로 변환하면 항상 10이 됩니다. 반면에 "0xB"는 11로 변환됩니다.

다른 한편, 일원적 감소는 값에 음수를 부여하는 것입니다(예를 들어 20을 -20으로 변환):

var iNum = 20;
iNum = -iNum;
alert(iNum);	// "-20" 출력

일원적 증가 연산자와 유사하게, 일원적 감소 연산자도 문자열을 근접한 숫자로 변환하고, 이 값을 음수로 처리합니다. 예를 들어:

var sNum = "20";
alert(typeof sNum);	// "string" 출력
var iNum = -sNum;
alert(iNum);		// "-20" 출력
alert(typeof iNum);	// "number" 출력

위의 코드에서는 일원적 감소 연산자가 문자열 "-20"을 -20으로 변환합니다. (일원적 감소 연산자는 십진수와 16진수를 처리하는 방식이 일원적 증가 연산자와 유사하지만, 이 연산자는 또한 그 값을 음수로 처리합니다.)