You are on page 1of 6

2/17/2021 what is the best way to check variable type in javascript - Stack Overflow

what is the best way to check variable type in javascript


Asked 7 years, 7 months ago Active 8 months ago Viewed 31k times

<script type="text/javascript">
function saveName (firstName) {
15 function capitalizeName () {
return firstName.toUpperCase();
}
var capitalized = capitalizeName();console.log(capitalized instanceof String);
return capitalized;
}
4 console.log(saveName("Robert")); // Returns "ROBERT"
</script>

Question:

I want to check the type of capitalized , so I use capitalized instanceof String ? But it shows:
false in console, I do not want to try capitalized instanceof Function , Object ...It will take too
much time, so what is the best way to detect a variable type?

javascript

Share Improve this question Follow asked Jul 3 '13 at 5:42


user2507818
1,879 4 14 25

1 Because a string literal isn't an object of String type. See typeof capitalized – zerkms Jul 3 '13 at
5:44

6 Answers Active Oldest Votes

The best way is to use the typeof keyword.

27 typeof "hello" // "string"

The typeof operator maps an operand to one of six values: "string" , "number" , "object" ,
"function" , "undefined" and "boolean" . The instanceof method tests if the provided function's
prototype is in the object's prototype chain.

This Wikibooks article along with this MDN articles does a pretty good job of summing up
JavaScript's types.
Join Stack Overflow to learn, share knowledge, and build your career. Sign up

https://stackoverflow.com/questions/17440517/what-is-the-best-way-to-check-variable-type-in-javascript#:~:text=The best way is to use the typeof key… 1/6


2/17/2021 what is the best way to check variable type in javascript - Stack Overflow

Share Improve this answer Follow edited Jul 8 '13 at 4:09 answered Jul 3 '13 at 5:45
LandonSchropp
8,902 16 71 142

typeof new String("hello") == "object" but it can benefit from all the same characteristics of
string . It would be safest to say typeof x == "string" || x instance of String – Brian Nickel ♦ Jul
3 '13 at 5:49

I suppose you're correct, although in practice I almost never see new String("hello") used. –
LandonSchropp Jul 3 '13 at 5:55

function is not a built-in type. A function is an object. And null is a type too. See ECMAScript specs,
sections 8 and 11.4.3 – a better oliver Jul 3 '13 at 6:14

use typeof();

2 example:

> typeof "foo"


"string"
> typeof true
"boolean"
> typeof 42
"number"

So you can do:

if(typeof bar === 'string') {


//whatever
}

Keep in mind that, typeof is only good for returning the "primitive" types, number, boolean, object,
string. You can also use instanceof to test if an object is of a specific type.

function MyObj(prop) {
this.prop = prop;
}

var obj = new MyObj(10);

console.log(obj instanceof MyObj && obj instanceof Object); // outputs true

Share Improve this answer Follow edited Jul 3 '13 at 5:53 answered Jul 3 '13 at 5:46
Fasil kk
2,006 13 23

typeof capitalized == 'string'


Join Stack Overflow to learn, share knowledge, and build your career. Sign up

https://stackoverflow.com/questions/17440517/what-is-the-best-way-to-check-variable-type-in-javascript#:~:text=The best way is to use the typeof key… 2/6


2/17/2021 what is the best way to check variable type in javascript - Stack Overflow

Share Improve this answer Follow answered Jul 3 '13 at 5:49


1
vladkras
13.7k 4 37 51

The best way is using typeof

1 typeof "blahha"

I made a function with help of jQuery library code, jQuery library type method github link .

var getType = (function() {

var objToString = ({}).toString ,


typeMap = {},
types = [
"Boolean",
"Number",
"String",
"Function",
"Array",
"Date",
"RegExp",
"Object",
"Error"
];

for ( var i = 0; i < types.length ; i++ ){


typeMap[ "[object " + types[i] + "]" ] = types[i].toLowerCase();
};

return function( obj ){


if ( obj == null ) {
return String( obj );
}
// Support: Safari <= 5.1 (functionish RegExp)
return typeof obj === "object" || typeof obj === "function" ?
typeMap[ objToString.call(obj) ] || "object" :
typeof obj;
}
}());

You can call it as getType("Hello")

Share Improve this answer Follow edited Jul 3 '13 at 6:24 answered Jul 3 '13 at 5:51
rab
3,902 1 27 39

The getVarType method (below) works for almost all variables. Check out this fiddle. It first uses
the very fast typeof for cases where the results are reliable. Then it uses a more expensive
1 toString method for other cases. Finally, if it is dealing with a named object (as returned by
Join Stack Overflow to learn, share knowledge, and build your career. Sign up

https://stackoverflow.com/questions/17440517/what-is-the-best-way-to-check-variable-type-in-javascript#:~:text=The best way is to use the typeof key… 3/6


2/17/2021 what is the best way to check variable type in javascript - Stack Overflow

Firefox for objects like document.location) it checks for Array-like objects and reports them as
arrays.

In comparison, typeof is embarrassingly poor. typeof([]) returns 'object', typeof(new Number())


returns object. It also returns 'object' for many other variables that aren't (for practical purposes)
objects. See the fiddle results for a comparison.

// Begin public utility /getVarType/


// Returns 'Function', 'Object', 'Array',
// 'String', 'Number', 'Null', 'Boolean', or 'Undefined'
//
getVarType = (function () {
var typeof_map = {
'undefined' : 'Undefined',
'boolean' : 'Boolean',
'number' : 'Number',
'string' : 'String',
'function' : 'Function',

'Undefined' : 'Undefined',
'Null' : 'Null',
'Boolean' : 'Boolean',
'Number' : 'Number',
'String' : 'String',
'Function' : 'Function',
'Array' : 'Array',
'StyleSheetList' : 'Array'
};

return function( data ) {


var type, type_str;

if ( data === null ) { return 'Null'; }


if ( data === undefined ) { return 'Undefined'; }

type = typeof( data );


type_str = typeof_map[ type ];

if ( type_str ) { return type_str; }

type = {}.toString.call( data ).slice( 8, -1 );


return typeof_map[ type ]
|| ( data instanceof Array ? 'Array' :
( data.propertyIsEnumerable(0) && data.length !== undefined
? 'Array' : 'Object' )
);
}

The only possible failure mode happens if you are testing a named array that is empty (e.g. an
empty enumerable DOM object besides the StyleSheetList). But on could add those to the
type_of_map as needed.

I hope that helps!

Share Improve this answer Follow edited Jul 11 '13 at 20:36 answered Jul 11 '13 at 1:27
Michael Mikowski
1,229 1 10 19
Join Stack Overflow to learn, share knowledge, and build your career. Sign up

https://stackoverflow.com/questions/17440517/what-is-the-best-way-to-check-variable-type-in-javascript#:~:text=The best way is to use the typeof key… 4/6


2/17/2021 what is the best way to check variable type in javascript - Stack Overflow

ES-Next version with support BigInt & Symbol

0
"use strict";

/**
*
* @author xgqfrms
* @license MIT
* @copyright xgqfrms
* @created 2020-06-09
* @modified
*
* @description js data type checker
* @augments
* @example
* @link
*
*/

const dataTypeChecker = (data, debug = false) => {


const log = console.log;
let result = ``;
const typeString = Object.prototype.toString.call(data);
result = typeString.replace(/\[object /gi, ``).replace(/\]/gi, ``);
if(debug) {
log(`true type`, result)
}
return result;
};

export default dataTypeChecker;

export {
dataTypeChecker,
};

test

const dataTypeChecker = (data, debug = false) => {


const log = console.log;
let result = ``;
const typeString = Object.prototype.toString.call(data);
// const typeString = Object.prototype.toString.apply(data);
result = typeString.replace(/\[object /gi, ``).replace(/\]/gi, ``);
if(!debug) {
log(`true type`, result)
}
return result;
};

Join Stack Overflow to learn, share knowledge, and build your career. Sign up
const obj = {};
https://stackoverflow.com/questions/17440517/what-is-the-best-way-to-check-variable-type-in-javascript#:~:text=The best way is to use the typeof key… 5/6
2/17/2021 what is the best way to check variable type in javascript - Stack Overflow
const func = () => {};

dataTypeChecker(NaN)
//"[object Number]"
dataTypeChecker(undefined)
//"[object Undefined]"
dataTypeChecker(true)
//"[object Boolean]"
dataTypeChecker({})
//"[object Object]"
dataTypeChecker(func)
//"[object Function]"
dataTypeChecker(obj)
//"[object Object]"
dataTypeChecker(Symbol())
//"[object Symbol]"
dataTypeChecker(null)
//"[object Null]"
dataTypeChecker(123)
//"[object Number]"
dataTypeChecker(BigInt(1n))
//"[object BigInt]"

Share Improve this answer Follow answered Jun 9 '20 at 13:47


xgqfrms
5,002 1 31 41

Join Stack Overflow to learn, share knowledge, and build your career. Sign up

https://stackoverflow.com/questions/17440517/what-is-the-best-way-to-check-variable-type-in-javascript#:~:text=The best way is to use the typeof key… 6/6

You might also like