当前位置: 移动技术网 > IT编程>开发语言>JavaScript > 判断变量的数据类型

判断变量的数据类型

2019年11月21日  | 移动技术网IT编程  | 我要评论

object.prototype.tostring.call()

判断变量类型的所有方法中,该方法可以说是判断的最完全的方法,所有的数据类型都可以判断,在使用object.prototype.tostring.call()方法判断变量类型时,需要判断的变量会放在小括号内

var str = "abc";
object.prototype.tostring.call(str); // [object string]

打印出来的字符串中第一个是call方法所在的原型实例是object,第二个就是我我们进行判断的变量的数据类型,这个方法可以判断任何的数据类型

var num= 123;
object.prototype.tostring.call(num); // [object number]
var bool= true;
object.prototype.tostring.call(bool); // [object boolean]
var n = null;
object.prototype.tostring.call(n); // [object null]
var un = undefined;
object.prototype.tostring.call(un); // [object undefined]
var func = function(){};
object.prototype.tostring.call(func); // [object function]
var obj= {};
object.prototype.tostring.call(obj); // [object object]

以及es6的新变量symbol也可以进行判断

var syb= symbol("abc");
console.log(object.prototype.tostring.call(syb)); // [object symbol]

typeof

typeof方法可以说是我们接触的比较早的判断变量的方法了,这个方法可以判断基本数据类型

typeof "abc" // "string"
typeof 123 // "number"
typeof true // "boolean"
typeof undefined// "undefined"

但是在判断null类型时,与其他判断结果产生了冲突

typeof null // object
typeof [] // object
typeof {} // object

结果为"function",也有冲突

typeof function(){} // "function"
typeof symbol // "function"

symbol虽然被称为es6的新变量,但它本身是一个构造函数,我们在声明变量的时候可以感受到

var syb = symbol("abc")

symbol后面加上了一个小括号,后面带小括号只有在调用函数的时候呀才回出现,而且这个地方判断变量还有一个新的情况

typeof syb // "symbol"

当symbol加入了参数时,typeof的结果就变成了"symbol"

constructor

通过变量的构造函数也可以得到变量的类型是什么,但是不能判断null和undefined,因为这两个数据类型不能通过实例化得到,所以不存在构造函数

[].constructor // ƒ array() { [native code] }
{}.constructor // ƒ object() { [native code] }
(123).constructor // ƒ number() { [native code] }
"abc".constructor // ƒ string() { [native code] }
true.constructor // ƒ boolean() { [native code] }
function(){}.constructor // ƒ function() { [native code] }
symbol.constructor // ƒ function() { [native code] }
symbol("abc").constructor // ƒ symbol() { [native code] }

这里也要注意function(){}和symbol的构造函数也都是f function(){[native code]}

function(){}.constructor // ƒ function() { [native code] }
symbol.constructor // ƒ function() { [native code] }

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网