基本数据类型判断

基本数据类型

Number 类型的判断

1.num 数据 可以分为 数字+0+NaN 其中0 和NaN判断比较令人头疼
判断是不是 Number 类型

val.constructor===number
Object.prototype.toString.call(val)=="[object Number]"

1判断是不是合法的Number

if(typeof val==='number'&&String(val)!='NaN'){
 
}

2.防止在老版本的浏览器不支持isNaN方法。

var a = "str";
var b = 2;
var c = a/b;

if(!Number.isNaN) {
Number.isNaN = function(n) {
return( typeof(n) === "number" && window.isNaN(n));
}
}
console.log(Number.isNaN(a)); // false
console.log(Number.isNaN(b)); // false

3.利用NaN是唯一一个不等于任何自身的特点。

var a = "str";
var b = 2;
var c = a/b;

function isNaN(n) {
if(n !== n) {
return true;
} else {
return false;
}
}
console.log(isNaN(a)); // false
console.log(isNaN(b)); // false
console.log(isNaN(c)); // true

ES6
isNaN:表示判断是否 是一个Number 类型
NaN(不是一个数字且数据类型为number,另外NaN != NaN)是执行数学运算没有成功,返回失败的结果。但是这个结果仍然是数字类型。

var a = "str";
var b = 2;
var c = a/b;

console.log(isNaN(a)); // true
console.log(isNaN(b)); // false
console.log(isNaN(c)); // true

这个例子中,a的结果是true,b是false,c是true。对于isNaN来说,它是判断一个值是不是NaN,如果是则返回true。但是a是一个字符串,用isNaN判断这个变量a的时候还是会返回true。所以判断一个变量是否为NaN不能使用isNaN()这个方法,可以用以下方法判断。

1.根据NaN的定义判断。

var a = "str";
var b = 2;
var c = a/b;

function isNaN(n) {
if(typeof(n) === "number" && isNaN(n)) {
return true;
} else {
return false;
}
}
console.log(Number.isNaN(a)); // false
console.log(Number.isNaN(b)); // false
console.log(Number.isNaN(c)); // true

2.利用ES6中提供的Object.is()方法。

var a = "str";
var b = 2;
var c = a/b;

console.log(Object.is(a, NaN)); // false
console.log(Object.is(b, NaN)); // false
console.log(Object.is(c, NaN)); // true

3.利用 Number.isNaN()

Number.isNaN(5);    //false
Number.isNaN("666666");    //false
Number.isNaN(5*"abc");  //true
Number.isNaN('I love my girlfriend!');  //false,string类型诶,不是number类型,好伤心

string 类型判断

1.string 数据 可以分为 字符串+""+“0” 其中0 和NaN判断比较令人头疼

if(typeof val ==='string'){
 
}
str2.constructor===String
Object.prototype.toString.call(str2)=="[object String]"

2.判断是非空字符串

if(typeof str=='string'&&str!=""){}
if(typeof str=='string'&&str.length!=0){}

3.判断纯字符串数字

// 整数 字符串
const result = /^\d+$/.test(number)
// 小数 字符串
var reg = /^[\d|\.]*$/;

if(Number(number)+'' !=='NaN'){
	console.log('是纯数字')
}else{
	console.log('不是纯数字')
}
   function isnumber(val) {
        var n = Number(val);
        if (!isNaN(n)) {
          return false;
        } else {
          return true;
        }
      }
if(Number(val)==Number(val){

}

以上是整体判断 还可以单个判断 0和9 判断大小

4.判断纯字符串
判断纯字符串数字 以上答案 取反 既可以

undefined 判断

if(typeof (val)=='undefined '){}
String(val)==='undefined'
if(val === undefined)

unll 类型判断

if(val===null)
if(typeof val=='object'&&!val){
}
if(typeof val=='object'&&a instanceof Object){
}

if(String(val)=='null')
var exp = null; 
if (!exp && typeof(exp)!=undefined&& exp!=0) 
{ 
alert(“is null); 
}

复杂数据类型

Arrary 的判断

if(arr instanceof Array)
arr.constructor===Array
Object.prototype.toString.call(str2)=="[object Array]"
if(typeof val==='object'&&JSON.stringly(val).slice(0,1)=='[')
Array.isArray()

Object 的判断

if(obj instanceof Obect)
obj.constructor===Obect
Object.prototype.toString.call(obj)=="[object object ]"
if(typeof val==='object'&&JSON.stringly(val).slice(0,1)=='{')

空对象判断

1.json
if(JSON.stringify(data) == "{}")
2.for in 循环判断    // 可枚举数据
var obj = {};
var b = function() {
for(var key in obj) {
return false;
}
return true;
}
3.Object.getOwnPropertyNames  // 获取不可以枚举数据
4.使用ES6的Object.keys()方法   // 可枚举数据

对象===>性质 性质===>对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

web修理工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值