# typeof null

In JavaScript, `typeof` is a useful operator for parsing data. `typeof` returns a string that describes the data type of the value passed in.

Example:

```ruby
typeof 1234 // "number"
typeof "abcd" // "string"
typeof false // "boolean"
typeof { foo: "bar" } // "object"
```

There are a few confusing cases in `typeof`. These are:

```ruby
typeof [a, b, c] // "object"
typeof NaN // "number"
typeof null // "object"
```

Kind of weird, right? The `null` value being read as "object" is especially unexpected. According to https://bitsofco.de/javascript-typeof/, this is due to the way `null` is represented in computer memory.

In order to determine a value of `null`, you will need to also determine that the value is `!== null`. I had a use case where I was building a payload and needed to determine if the incoming data was an empty object or was truly null. If the data was an array, I needed to make sure that the value in the payload was an empty array. Likewise, I needed to ensure that `null` values were not assigned to be an empty array, but remained `null`.

```ruby
if (typeof payload[key] === 'object' && payload[key] !== null) {
            payload[key] = []
          } else {
            payload[key] = null
          }
```

This `if` statement will check if a value is an object and ensure that the value is not `null` returning the `object` type.
