stanigator
stanigator

Reputation: 10944

How to use typeof and switch cases in Javascript

I'm having problems finding out what's wrong with the code below. I have consulted how to use typeof and switch cases, but I'm lost at this point. Thanks in advance for your advices.

// Write a function that uses switch statements on the
// type of value. If it is a string, return 'str'. If it
// is a number, return 'num'. If it is an object, return
// 'obj'. If it is anything else, return 'other'.
function detectType(value) {
  switch (typeof value) {
    case string:
      return "str";
    case number:
      return "num";
    default:
      return "other";
  }
}

------------- Update -----------------------------------

Turns out the problem comes from my mistake (or rather oversight) of not following the instructions properly. Thanks again for your help and comments!

Upvotes: 26

Views: 27597

Answers (4)

Kingsley Liu
Kingsley Liu

Reputation: 80

typeof returns a string so you should encase your switch cases between single quotes.


function detectType(value) {
  switch (typeof value) {
    case 'string': // string should me 'string'
      return "string";
    case 'number':
      return "number";
    default:
      return "other";
  }
}

😉

Upvotes: 1

d48
d48

Reputation: 692

This is the code that will work. I'm going through the codeacademy.com coures also. The issue was with typeOf having mixed casing. It's case sensitive and should be all lowercase: typeof

function detectType(value) {
  switch(typeof value){
    case "string":
      return "str";
    case "number":
      return "num";
    case "object":
      return "obj";
    default:
      return "other";
  }
}

Upvotes: 3

Ido Green
Ido Green

Reputation: 2813

This is the code the will work for you:

function detectType(value) {
  switch (typeof value) {
  case "string":
     return "str";
  case "number":
     return "num";
  default:
     return "other";
  }
}

Upvotes: 1

qiao
qiao

Reputation: 18219

typeof returns a string, so it should be

function detectType(value) {
  switch (typeof value) {
    case 'string':
      return "str";
    case 'number':
      return "num";
    default:
      return "other";
  }
}

Upvotes: 39

Related Questions