수색…
통사론
- 무효 표현; // 표현식을 평가하고 반환 값을 무시합니다.
- + 표현; // 수식을 숫자로 변환하려고 시도합니다.
- delete object.property; // 객체의 속성 삭제
- 객체 삭제 [ "property"]; // 객체의 속성 삭제
- typeof 피연산자; // 피연산자 유형을 반환합니다.
- ~ 표현; // 표현의 각 비트마다 NOT 연산 수행
- !표현; // 표현식에서 논리적 부정을 수행합니다.
- -표현; // 숫자로 변환을 시도한 후 표현식을 무효화합니다.
단항 더하기 연산자 (+)
단항 플러스 ( +
)는 피연산자 앞에 오고 피연산자 로 계산 됩니다. 피연산자를 숫자로 변환하려고 시도합니다 (아직없는 경우).
통사론:
+expression
보고:
-
Number
.
기술
단항 플러스 ( +
) 연산자는 무언가를 숫자로 변환하는 가장 빠른 (선호되는) 방법입니다.
그것은 변환 할 수 있습니다 :
- 정수 (십진수 또는 16 진수) 및 부동 소수점의 문자열 표현입니다.
- 불리언 :
true
,false
. -
null
변환 할 수없는 값은 NaN
평가됩니다.
예 :
+42 // 42
+"42" // 42
+true // 1
+false // 0
+null // 0
+undefined // NaN
+NaN // NaN
+"foo" // NaN
+{} // NaN
+function(){} // NaN
배열을 변환하려고하면 예기치 않은 반환 값이 발생할 수 있습니다.
백그라운드에서 배열은 먼저 문자열 표현으로 변환됩니다.
[].toString() === '';
[1].toString() === '1';
[1, 2].toString() === '1,2';
그런 다음 연산자는 해당 문자열을 숫자로 변환하려고 시도합니다.
+[] // 0 ( === +'' )
+[1] // 1 ( === +'1' )
+[1, 2] // NaN ( === +'1,2' )
삭제 연산자
delete
연산자는 객체에서 속성을 삭제합니다.
통사론:
delete object.property
delete object['property']
보고:
삭제가 성공했거나 속성이 존재하지 않는 경우 :
-
true
삭제할 속성이 구성 할 수없는 자체 속성 인 경우 (삭제할 수 없음) :
- 비 엄격 모드에서는
false
입니다. - 엄격 모드에서 오류가 발생합니다.
기술
delete
연산자는 메모리를 직접 비우지 않습니다. 작업이 속성에 대한 모든 참조가 사라진 경우 간접적으로 메모리를 비울 수 있습니다.
delete
는 객체의 속성에서 작동합니다. 객체의 프로토 타입 체인에 같은 이름의 속성이 있으면 해당 속성이 프로토 타입에서 상속됩니다.
delete
는 변수 또는 함수 이름에서 작동하지 않습니다.
예 :
// Deleting a property
foo = 1; // a global variable is a property of `window`: `window.foo`
delete foo; // true
console.log(foo); // Uncaught ReferenceError: foo is not defined
// Deleting a variable
var foo = 1;
delete foo; // false
console.log(foo); // 1 (Not deleted)
// Deleting a function
function foo(){ };
delete foo; // false
console.log(foo); // function foo(){ } (Not deleted)
// Deleting a property
var foo = { bar: "42" };
delete foo.bar; // true
console.log(foo); // Object { } (Deleted bar)
// Deleting a property that does not exist
var foo = { };
delete foo.bar; // true
console.log(foo); // Object { } (No errors, nothing deleted)
// Deleting a non-configurable property of a predefined object
delete Math.PI; // false ()
console.log(Math.PI); // 3.141592653589793 (Not deleted)
typeof 연산자
typeof
연산자는 평가되지 않은 피연산자의 데이터 유형을 문자열로 반환합니다.
통사론:
typeof operand
보고:
다음은 typeof
의 가능한 반환 값입니다.
유형 | 반환 값 |
---|---|
Undefined | "undefined" |
Null | "object" |
Boolean | "boolean" |
Number | "number" |
String | "string" |
Symbol (ES6) | "symbol" |
Function 객체 | "function" |
document.all | "undefined" |
호스트 객체 (JS 환경에서 제공) | 구현 의존적 |
다른 객체 | "object" |
typeof
연산자를 사용하는 document.all
의 비정상적인 동작은 이전 브라우저에서 레거시 브라우저를 감지하는 데 있습니다. 자세한 내용 은 document.all이 정의 된 이유는 무엇이지만 typeof document.all은 "undefined"를 반환합니까?를 참조하십시오 .
예 :
// returns 'number'
typeof 3.14;
typeof Infinity;
typeof NaN; // "Not-a-Number" is a "number"
// returns 'string'
typeof "";
typeof "bla";
typeof (typeof 1); // typeof always returns a string
// returns 'boolean'
typeof true;
typeof false;
// returns 'undefined'
typeof undefined;
typeof declaredButUndefinedVariable;
typeof undeclaredVariable;
typeof void 0;
typeof document.all // see above
// returns 'function'
typeof function(){};
typeof class C {};
typeof Math.sin;
// returns 'object'
typeof { /*<...>*/ };
typeof null;
typeof /regex/; // This is also considered an object
typeof [1, 2, 4]; // use Array.isArray or Object.prototype.toString.call.
typeof new Date();
typeof new RegExp();
typeof new Boolean(true); // Don't use!
typeof new Number(1); // Don't use!
typeof new String("abc"); // Don't use!
// returns 'symbol'
typeof Symbol();
typeof Symbol.iterator;
void 연산자
void
연산자는 주어진 표현식을 평가 한 다음 undefined
를 반환합니다.
통사론:
void expression
보고:
-
undefined
기술
void
연산자는 void 0
또는 void(0)
를 쓰는 방법으로 undefined
기본 값을 가져 오는 데 자주 사용됩니다. void
는 함수가 아니라 연산자이므로, ()
는 필요하지 않습니다.
일반적으로 void
표현식과 undefined
의 결과는 서로 바꿔서 사용할 수 있습니다.
그러나, ECMAScript를 이전 버전의 window.undefined
값을 할당 할 수 있으며, 이는 여전히 사용 가능 undefined
함수 이름은 따라서의 값에 의존하는 다른 코드 방해 함수 내부 변수를 파라미터로 undefined
.
void
항상 진정한 얻을 것입니다 undefined
하지만 값입니다.
void 0
은 undefined
를 작성하는 짧은 방법으로 코드 축소에서 일반적으로 사용됩니다. 또한 다른 코드가 window.undefined
변조 할 수 있으므로 더 안전합니다.
예 :
undefined
반환 :
function foo(){
return void 0;
}
console.log(foo()); // undefined
특정 범위 내에서 undefined
값 변경 :
(function(undefined){
var str = 'foo';
console.log(str === undefined); // true
})('foo');
단항 부정 연산자 (-)
단항 부정 ( -
)은 숫자로 변환하려고 시도한 후에 피연산자 앞에오고 음수로 반올림합니다.
통사론:
-expression
보고:
-
Number
.
기술
단항 부정 ( -
)은 단항 더하기 ( +
) 연산자와 동일한 유형 / 값을 변환 할 수 있습니다.
변환 할 수없는 값은 NaN
평가됩니다 ( -NaN
이 없음).
예 :
-42 // -42
-"42" // -42
-true // -1
-false // -0
-null // -0
-undefined // NaN
-NaN // NaN
-"foo" // NaN
-{} // NaN
-function(){} // NaN
배열을 변환하려고하면 예기치 않은 반환 값이 발생할 수 있습니다.
백그라운드에서 배열은 먼저 문자열 표현으로 변환됩니다.
[].toString() === '';
[1].toString() === '1';
[1, 2].toString() === '1,2';
그런 다음 연산자는 해당 문자열을 숫자로 변환하려고 시도합니다.
-[] // -0 ( === -'' )
-[1] // -1 ( === -'1' )
-[1, 2] // NaN ( === -'1,2' )
비트 NOT 연산자 (~)
비트 NOT ( ~
)은 값의 각 비트에 대해 NOT 연산을 수행합니다.
통사론:
~expression
보고:
-
Number
.
기술
NOT 연산의 진리표는 다음과 같습니다.
에이 | NOT a |
---|---|
0 | 1 |
1 | 0 |
1337 (base 10) = 0000010100111001 (base 2)
~1337 (base 10) = 1111101011000110 (base 2) = -1338 (base 10)
숫자가 아닌 비트는 -(x + 1)
됩니다.
예 :
값 (밑 10) | 값 (밑 2) | 반환 (기본 2) | 반환 (기본 10) |
---|---|---|---|
2 | 00000010 | 11111100 | -3 |
1 | 00000001 | 11111110 | -2 |
0 | 00000000 | 11111111 | -1 |
-1 | 11111111 | 00000000 | 0 |
-2 | 11111110 | 00000001 | 1 |
-3 | 11111100 | 00000010 | 2 |
논리 NOT 연산자 (!)
논리 NOT ( !
) 연산자는 표현식에 대해 논리 부정을 수행합니다.
통사론:
!expression
보고:
-
Boolean
.
기술
논리 NOT ( !
) 연산자는 표현식에 대해 논리 부정을 수행합니다.
부울 값은 단순히 반전됩니다. !true === false
및 !false === true
.
부울이 아닌 값은 먼저 부울 값으로 변환 된 다음 무효화됩니다.
즉, 이중 논리 NOT ( !!
)을 사용하여 모든 값을 부울로 변환 할 수 있습니다.
!!"FooBar" === true
!!1 === true
!!0 === false
이것들은 모두 같다 !true
:
!'true' === !new Boolean('true');
!'false' === !new Boolean('false');
!'FooBar' === !new Boolean('FooBar');
![] === !new Boolean([]);
!{} === !new Boolean({});
이것들은 모두 !false
같습니다.
!0 === !new Boolean(0);
!'' === !new Boolean('');
!NaN === !new Boolean(NaN);
!null === !new Boolean(null);
!undefined === !new Boolean(undefined);
예 :
!true // false
!-1 // false
!"-1" // false
!42 // false
!"42" // false
!"foo" // false
!"true" // false
!"false" // false
!{} // false
![] // false
!function(){} // false
!false // true
!null // true
!undefined // true
!NaN // true
!0 // true
!"" // true
개요
단항 연산자는 피연산자가 하나 뿐인 연산자입니다. 단항 연산자는 표준 JavaScript 함수 호출보다 효율적입니다. 또한 단항 연산자를 재정의 할 수 없으므로 해당 기능이 보장됩니다.
다음과 같은 단항 연산자를 사용할 수 있습니다.
운영자 | 조작 | 예 |
---|---|---|
delete | delete 연산자는 객체에서 속성을 삭제합니다. | 예 |
void | void 연산자는 식의 반환 값을 무시합니다. | 예 |
typeof | typeof 연산자는 주어진 객체의 유형을 결정합니다. | 예 |
+ | 단항 더하기 연산자는 피연산자를 숫자 유형으로 변환합니다. | 예 |
- | 단항 부정 연산자는 피연산자를 Number로 변환 한 다음이를 무효화합니다. | 예 |
~ | 비트 NOT 연산자. | 예 |
! | 논리적 NOT 연산자. | 예 |