判断变量的数据类型
程序员文章站
2022-05-31 19:54:16
Object.prototype.toString.call() 判断变量类型的所有方法中,该方法可以说是判断的最完全的方法,所有的数据类型都可以判断,在使用Object.prototype.toString.call()方法判断变量类型时,需要判断的变量会放在小括号内 var str = "abc ......
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] }
推荐阅读
-
java环境变量配置好后双击jar文件无法运行的解决办法
-
2万毫安移动电源安全吗?判断20000毫安充电宝的真假的方法
-
使用鲁大师给电脑综合性能评分根据分值判断电脑的综合性能
-
Java的基本数据类型和运算方法(必看篇)
-
vue的style绑定background-image的方式和其他变量数据的区别详解
-
SqlServer中用exec处理sql字符串中含有变量的小例子
-
SQLSERVER ISNULL 函数与判断值是否为空的sql语句
-
SQL Server、Oracle和MySQL判断NULL的方法
-
sql中参数过多利用变量替换参数的方法
-
.NET/C#如何判断某个类是否是泛型类型或泛型接口的子类型详解