수색…


통사론

  • 무효 표현; // 표현식을 평가하고 반환 값을 무시합니다.
  • + 표현; // 수식을 숫자로 변환하려고 시도합니다.
  • 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 0undefined 를 작성하는 짧은 방법으로 코드 축소에서 일반적으로 사용됩니다. 또한 다른 코드가 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 연산자.


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow