Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
</body>
</html>
 
function truthy(val){
  switch(typeof val){
    case "number":
      // since the val is already a number, only zero and NaN should be counted as falsy.
      return val !== 0 && !Number.isNaN(Number(val));
    case "string":
      // val is string, so need to check if its empty or "0". Otherwise it should be counted as truthy
      return val !== "" && val !== "0";
    case "boolean":
      // val is already boolean so only boolean check would suffice
      return val === true;
    case "symbol":
      //    symbol should be truthy
      return true;
    case "object":
      // object can be deceiving, so lets check for NULL and empty object
      
      if( val === null ){
        return false;
      }
      else{
        for( var i in val ){
          if( val.hasOwnProperty(i) ){
            return true;
          }
        }
      }
      
      return false;
    case "undefiend":
      return false;
    case "function":
      return true;
  }
}
function falsy(val){
  return !truthy(val);
}
console.log(truthy(1));     // should be true
console.log(truthy(0));     // should be false
console.log(truthy(NaN));   // should be false
console.log(truthy(""));    // should be false
console.log(truthy("0"));   // should be false
console.log(truthy("1"));   // should be true
console.log(truthy("meh")); // should be true
console.log(truthy({}));    // should be false
console.log(truthy(null));  // should be false
console.log(truthy(false)); // should be false
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
maksbd19pro
0viewers