The unary operators `+` and `-` can be used to convert some value types to numeric values. But not every value can be converted to a `Number` type: use it with an object, and result will be always `NaN` (Not A Number).

## Noncompliant Code Example

    var obj = {x : 1};
    doSomethingWithNumber(+obj);    // Noncompliant

    function foo(){
      return 1;
    }
    doSomethingWithNumber(-foo);    // Noncompliant

## Compliant Solution

    var obj = {x : 1};
    doSomethingWithNumber(+obj.x);

    function foo(){
      return 1;
    }
    doSomethingWithNumber(-foo());

    var str = '42';
    doSomethingWithNumber(+str);

## Exceptions

Unary `+` and `-` can be used with objects corresponding to primitive types.

    var b = new Boolean(true);
    doSomethingWithNumber(-b);  // Compliant