Sök…


Syntax

  • ogiltigt uttryck; // Utvärderar uttryck och kastar returvärde
  • + Uttryck; // Försök att konvertera uttrycket till ett nummer
  • ta bort object.property; // Radera objektets egendom
  • radera objekt ["egenskap"]; // Radera objektets egendom
  • typof operand; // Returnerar typ av operand
  • ~ Expression; // Utför INTE operation på varje uttrycksbit
  • !uttryck; // Utför logisk negation vid uttryck
  • -uttryck; // Negera uttrycket efter att ha försökt konvertering till nummer

Unary plus-operatören (+)

Unary plus ( + ) föregår sin operand och utvärderar till sin operand. Den försöker konvertera operand till ett nummer, om den inte redan är det.

Syntax:

+expression

Returns:

  • ett Number .

Beskrivning

Unary plus ( + ) -operatören är den snabbaste (och föredragna) metoden att konvertera något till ett nummer.

Det kan konvertera:

  • strängrepresentation av heltal (decimal eller hexadecimal) och flyter.
  • booleans: true , false .
  • null

Värden som inte kan konverteras utvärderas till NaN .

Exempel:

+42           // 42
+"42"         // 42
+true         // 1
+false        // 0
+null         // 0
+undefined    // NaN
+NaN          // NaN
+"foo"        // NaN
+{}           // NaN
+function(){} // NaN

Observera att försök att konvertera en matris kan resultera i oväntade värden på retur.
I bakgrunden konverteras matriser först till sina strängrepresentationer:

[].toString() === '';
[1].toString() === '1';
[1, 2].toString() === '1,2';

Operatören försöker sedan konvertera dessa strängar till siffror:

+[]           // 0   ( === +'' )
+[1]          // 1   ( === +'1' )
+[1, 2]       // NaN ( === +'1,2' )

Radera operatören

delete raderar en egenskap från ett objekt.

Syntax:

delete object.property

delete object['property']

Returns:

Om borttagningen är framgångsrik eller om fastigheten inte fanns:

  • true

Om den egendom som ska raderas är en egen icke-konfigurerbar egenskap (kan inte raderas):

  • false i icke-strikt läge.
  • Kasta ett fel i strikt läge

Beskrivning

delete frigör inte direkt minnet. Det kan indirekt frigöra minne om operationen innebär att alla referenser till egenskapen är borta.

delete verk på ett objekts egenskaper. Om en egenskap med samma namn finns i objektets prototypkedja, kommer den att ärvas från prototypen.
delete fungerar inte på variabler eller funktionsnamn.

Exempel:

// 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)

Typ av operatör

typeof operatören returnerar typeof för den ovärderade operanden som en sträng.

Syntax:

typeof operand

Returns:

Dessa är de möjliga typeof från typeof :

Typ Returvärde
Undefined "undefined"
Null "object"
Boolean "boolean"
Number "number"
String "string"
Symbol (ES6) "symbol"
Function "function"
document.all "undefined"
Värdobjekt (tillhandahålls av JS-miljön) Genomförande beroende
Alla andra objekt "object"

document.all ovanliga beteende med typeof operatören är från dess tidigare användning för att upptäcka gamla webbläsare. Mer information finns i Varför definieras document.all men typ av document.all returnerar "odefinierat"?

Exempel:

// 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;

Den ogiltiga operatören

Den void operatören utvärderar det givna uttrycket och returnerar sedan undefined .

Syntax:

void expression

Returns:

  • undefined

Beskrivning

void används ofta för att erhålla det undefined primitiva värdet, genom att skriva void 0 eller void(0) . Observera att void är en operatör, inte en funktion, så () krävs inte.

Vanligtvis kan resultatet av ett void uttryck och undefined användas omväxlande.
I äldre versioner av ECMAScript kan window.undefined emellertid tilldelas valfritt värde, och det är fortfarande möjligt att använda undefined som namn för funktionsparametrarvariabler inuti funktioner, och därmed störa annan kod som förlitar sig på undefined värde.
void kommer dock alltid att ge det verkliga undefined värdet.

void 0 används också ofta vid kodminifiering som ett kortare sätt att skriva undefined . Dessutom är det förmodligen säkrare eftersom någon annan kod kunde ha manipulerat med window.undefined .

Exempel:

Återvända undefined :

function foo(){
    return void 0;
}
console.log(foo()); // undefined

Ändra värdet av undefined inom ett visst omfång:

(function(undefined){
    var str = 'foo';
    console.log(str === undefined); // true
})('foo');

Operatören för unary negation (-)

Den unary negationen ( - ) föregår sin operand och negerar den, efter att ha försökt konvertera den till nummer.

Syntax:

-expression

Returns:

  • ett Number .

Beskrivning

Unary negation ( - ) kan konvertera samma typer / värden som operatören unary plus ( + ) kan.

Värden som inte kan konverteras utvärderas till NaN (det finns inget -NaN ).

Exempel:

-42           // -42
-"42"         // -42
-true         // -1
-false        // -0
-null         // -0
-undefined    // NaN
-NaN          // NaN
-"foo"        // NaN
-{}           // NaN
-function(){} // NaN

Observera att försök att konvertera en matris kan resultera i oväntade värden på retur.
I bakgrunden konverteras matriser först till sina strängrepresentationer:

[].toString() === '';
[1].toString() === '1';
[1, 2].toString() === '1,2';

Operatören försöker sedan konvertera dessa strängar till siffror:

-[]           // -0  ( === -'' )
-[1]          // -1  ( === -'1' )
-[1, 2]       // NaN ( === -'1,2' )

Operatören för bitvis INTE (~)

Den bitvisa INTE ( ~ ) utför en INTE-operation på varje bit i ett värde.

Syntax:

~expression

Returns:

  • ett Number .

Beskrivning

Sanningstabellen för INTE-operationen är:

en INTE en
0 1
1 0
1337  (base 10) = 0000010100111001 (base 2)
~1337 (base 10) = 1111101011000110 (base 2) = -1338 (base 10)

Litevis inte på ett tal resulterar i: -(x + 1) .

Exempel:

värde (bas 10) värde (bas 2) retur (bas 2) retur (bas 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

Den logiska INTE operatören (!)

Den logiska INTE ( ! ) Operatören utför logisk negation på ett uttryck.

Syntax:

!expression

Returns:

  • en Boolean .

Beskrivning

Den logiska INTE ( ! ) Operatören utför logisk negation på ett uttryck.

Booleska värden blir helt enkelt inverterade !true === false och !false === true .
Icke-booleska värden konverteras först till booleska värden och negeras sedan.

Detta innebär att en dubbel logisk INTE ( !! ) kan användas för att kasta valfritt värde till en booleska:

!!"FooBar" === true
!!1 === true
!!0 === false

Dessa är alla lika med !true :

!'true' === !new Boolean('true');
!'false' === !new Boolean('false');
!'FooBar' === !new Boolean('FooBar');
![] === !new Boolean([]);
!{} === !new Boolean({});

Dessa är alla lika !false :

!0 === !new Boolean(0);
!'' === !new Boolean('');
!NaN === !new Boolean(NaN);
!null === !new Boolean(null);
!undefined === !new Boolean(undefined);

Exempel:

!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

Översikt

Unary-operatörer är operatörer med endast en operand. Unary-operatörer är mer effektiva än vanliga JavaScript-funktionssamtal. Dessutom kan unary operatörer inte åsidosättas och därför garanteras deras funktionalitet.

Följande unary operatörer är tillgängliga:

Operatör Drift Exempel
delete Raderaoperatören raderar en egenskap från ett objekt. exempel
void Den ogiltiga operatören förkastar ett uttrycks returvärde. exempel
typeof Typof-operatören bestämmer typen för ett givet objekt. exempel
+ Den unary plus-operatören konverterar sin operand till nummertyp. exempel
- Operatören med unary negation konverterar sin operand till Number och förnekar den sedan. exempel
~ Bitvis INTE operatör. exempel
! Logiskt INTE operatör. exempel


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow