html中做数据判断,javascript如何判断变量的数据类型?

ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。它是 JavaScript语言的第七种数据类型,前六种是:undefined、null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)。

dc72bbe17afd4682deacd017bee1cdc5.png

javascript判断变量的数据类型的方法:

一、通过 typeof 来判断var a = 8;

var b = '8';

var c = true;

var d = [ 1, 3, 5, 7 ];

var e = { id: 1, name: 'loushengyue' };

var f = function() {

return 'abc';

};

var g = 10.28;

var h = null;

var i = undefined;

var j = NaN;

var s1 = Symbol();

var s2 = Symbol.for('s2');

console.log(typeof a); //number

console.log(typeof b); //string

console.log(typeof c); //boolean

console.log(typeof d); //object

console.log(typeof e); //object

console.log(typeof f); //function

console.log(typeof g); //number

console.log(typeof h); //object

console.log(typeof i); //undefined

console.log(typeof j); //number

console.log(typeof s1); //symbol

console.log(typeof s2); //symbol

typeof只能用来判断简单(值)类型的变量,不能用来判断引用类型(如:Json对象,Array)。

二、通过 instanceof 来判断

概念:instanceof 是指某个对象是否属于某个构造函数的实例对象。var a = 8,

b = new Number(8);

console.log(a instanceof Number); //false

console.log(b instanceof Number); //true

console.log(8 instanceof Number); //false

//其他数值类型也同数值一样

var obj = { id: 1 }, //因为{}==new Object()

obj2 = new Object();

obj2.id = 2;

console.log(obj instanceof Object); //true

console.log(obj2 instanceof Object); //true

console.log(null instanceof Object); //false

var arr = [ 1, 2, 3 ]; //因为[]==new Array()

console.log(arr instanceof Object); //true

console.log(arr instanceof Array); //true

var fn = function() {

console.log('jjjj');

};

console.log(fn instanceof Object); //true

console.log(fn instanceof Function); //true

var sy = Symbol('a');

console.log(sy instanceof Symbol); //false

instanceof 可以用来判断引用类型(如:Object,Array,Function),它通常需要结合 typeof 来使用,否则容易误判。

三、通过 toString 来判断(推荐做法)var a = 8;

var b = '8';

var c = true;

var d = [ 1, 3, 5, 7 ];

var e = { id: 1, name: 'loushengyue' };

var f = function() {

return 'abc';

};

var g = 10.28;

var h = null;

var i = undefined;

var j = NaN;

var sy = Symbol('sy');

myTypeof(a);//[object Number]

myTypeof(b);//[object String]

myTypeof(c);//[object Boolean]

myTypeof(d);//[object Array]

myTypeof(e);//[object Object]

myTypeof(f);//[object Function]

myTypeof(g);//[object Number]

myTypeof(h);//[object Null]

myTypeof(i);//[object Undefined]

myTypeof(j);//[object Number]

myTypeof(sy);//[object Symbol]

function myTypeof(obj) {

console.log(Object.prototype.toString.call(obj));

}

通过 Object 原型链(prototype)上的 toString 来判断变量的类型是最直观靠谱的,这也是各大框架底层用来判断数据类型的方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值