基于javascript中的typeof和品种判定,JS中的typeof和品种决断

typeof

typeof

摘要

那篇文章讲述typeof运算符判定基本项目和引用类型的区分,以及怎么判别数组类型和空对象

typeof

ECMAScript 有 伍 种原始类型(primitive type),即
Undefined、Null、Boolean、Number 和
String。我们都晓得能够利用typeof运算符求得四个变量的门类,不过对引用类型变量却只会重临object,也便是说typeof只可以科学识别基本类型值变量。

ECMAScript 有 5 种原始类型(primitive type),即
Undefined、Null、Boolean、Number 和
String。大家都通晓能够行使typeof运算符求得2个变量的品种,但是对引用类型变量却只会回到object,也便是说typeof只好精确识别基本类型值变量。

typeof

ECMAScript 有 伍 种原始类型(primitive type),即
Undefined、Null、Boolean、Number 和
String。大家都掌握能够使用typeof运算符求得八个变量的花色,不过对引用类型变量却只会回去object基于javascript中的typeof和品种判定,JS中的typeof和品种决断。,也便是说typeof只好准确识别基本类型值变量。

var a = "abc";
typeof a;// "string"

var b = 123;
typeof b;// "number"

var c = true;
typeof c;// "boolean"

var d = null;
typeof d;// "object"

var f = undefined;
typeof f;// "undefined"

var g;
typeof g;// "undefined"
typeof x;// "object"

您或者会问,为啥 typeof 运算符对于 null 值会再次来到 “object”。那其实是
JavaScript 最初达成中的贰个张冠李戴,然后被 ECMAScript 沿用了。未来,null
被以为是目的的占位符,从而解释了那1争执,但从本事上来说,它照旧是原始值。

最终三个相比较奇异,typeof贰个不存在的变量x居然再次回到了”object”而不是”undefined”。

咱俩在来如下代码

var a = function() {};
typeof a; // "function"

var b = [1,2,3];
typeof b; // "object"

var c = {};
typeof c; // "object"

对于数组和目的都回到”object”,因而大家常见支付中3个大规模供给正是何许决断变量是数组还是对象。

ECMAScript 有 伍 种原始类型(primitive type),即
Undefined、Null、Boolean、Number 和
String。大家都清楚能够应用typeof运算符求得2个变量的类型,不过对引用类型变量却只会回去object,也正是说typeof只好科学识别基本类型值变量。

var a = "abc";
console.log(typeof a); // "string"
var b = 123;
console.log(typeof b); // "number"
var c = true;
console.log(typeof c); // "boolean"
var d = null;
console.log(typeof d); // "object"
var f = undefined;
console.log(typeof f); // "undefined"
var g;
console.log(typeof g); // "undefined"

console.log(typeof x); // "undefined"
var a = "abc";
console.log(typeof a); // "string"
var b = 123;
console.log(typeof b); // "number"
var c = true;
console.log(typeof c); // "boolean"
var d = null;
console.log(typeof d); // "object"
var f = undefined;
console.log(typeof f); // "undefined"
var g;
console.log(typeof g); // "undefined"

console.log(typeof x); // "undefined"

项目推断

种类决断,一般就是判断是还是不是是数组,是还是不是是空对象。那是针对性那个供给,作者一般用过或见过的决断方式

看清是还是不是是数组
有数组:var a = [1,2,3,4,5];
方法一:

toString.call(a); // "[object Array]"

方法二:

a instanceof Array; //true

方法三:

a.constructor == Array; //true

率先种艺术相比通用,也正是Object.prototype.toString.call(a)的简写。

instanceofconstructor认清的变量,必须在现阶段页面评释的,比方,三个页面(父页面)有一个框架,框架中援引了多个页面(子页面),在子页面中宣示了三个a,并将其赋值给父页面包车型地铁1个变量,那时判别该变量,Array == object.constructor会返回false

看清是或不是是空对象
有变量:var obj = {};
方法一:

JSON.stringify(obj); // "{}"

经过转移成JSON对象来推断是不是是台湾空中大学括号

方法二:

if(obj.id){
   //如果属性id存在....
}

其一措施相比土,大诸多人都能想到,前提是得清楚对象中有有些属性。

方法三:

function isEmptyObject(e) {  
    var t;  
    for (t in e)  
        return !1;  
    return !0  
} 

//true
isEmptyObject(obj); 
//false
isEmptyObject({
    "a":1,
    "b":2
}); 

以此办法是jQuery的isEmptyObject()方法的得以达成形式。


小说出处:http://dunizb.com
原稿链接:澳门葡京 ,http://dunizb.com/2017/07/08/JS-in-the-typeof-and-type-judgment/

澳门葡京 1

文章首发于自己的微信公众号,关怀可获得每便最新推送

var a = "abc";
console.log(typeof a); // "string"
var b = 123;
console.log(typeof b); // "number"
var c = true;
console.log(typeof c); // "boolean"
var d = null;
console.log(typeof d); // "object"
var f = undefined;
console.log(typeof f); // "undefined"
var g;
console.log(typeof g); // "undefined"

console.log(typeof x); // "undefined"

您恐怕会问,为啥 typeof 运算符对于 null 值会重临 “object”。那其实是
JavaScript 最初落成中的二个张冠李戴,然后被 ECMAScript 沿用了。以往,null
被以为是目的的占位符,从而解释了这1冲突,但从才具上来讲,它依然是原始值。

您大概会问,为啥 typeof 运算符对于 null 值会重临 “object”。那实质上是
JavaScript 最初达成中的贰个指鹿为马,然后被 ECMAScript 沿用了。今后,null
被感觉是目的的占位符,从而解释了那一争持,但从技能上来讲,它仍旧是原始值。

你恐怕会问,为何 typeof 运算符对于 null 值会回到 “object”。这实际是
JavaScript 最初完成中的贰个荒谬,然后被 ECMAScript 沿用了。以往,null
被以为是目的的占位符,从而解释了那一争辨,但从工夫上来说,它照旧是原始值。

最终二个相比较古怪,typeof一个不存在的变量x乃至再次回到了”object”而不是”undefined”。

最终1个比较古怪,typeof三个不存在的变量x居然再次来到了”object”而不是”undefined”。

终极二个比较诡异,typeof三个不存在的变量x居然重临了”object”而不是”undefined”。

大家在来如下代码:

作者们在来如下代码:

大家在来如下代码:

var a = function() { };
console.log(typeof a); // "function"
var b = [1,2,3]; 
console.log(typeof b); // "object"
var c = { };
console.log(typeof c); // "object"  
var a = function() { };
console.log(typeof a); // "function"
var b = [1,2,3]; 
console.log(typeof b); // "object"
var c = { };
console.log(typeof c); // "object"  
var a = function() { };
console.log(typeof a); // "function"
var b = [1,2,3]; 
console.log(typeof b); // "object"
var c = { };
console.log(typeof c); // "object"

 

 

对此数组和目的都回去”object”,由此大家平时支付中2个广大须求就是怎样判别变量是数组照旧对象。

对此数组和目的都回到”object”,因而我们日常费用中三个大面积需要就是哪些推断变量是数组依然对象。

对于数组和目标都回来”object”,因而我们常常开销中一个常见须要正是何许判断变量是数组仍旧对象。

类型判断

项目判别

品种推断

品类推断,一般正是推断是不是是数组,是还是不是是空对象。那是本着那么些供给,作者经常用过或见过的判别方法

类型判定,一般就是推断是或不是是数组,是不是是空对象。那是针对性这么些供给,作者一般用过或见过的论断方式

项目剖断,一般正是剖断是不是是数组,是不是是空对象。那是针对那些须要,小编常常用过或见过的推断方法

认清是或不是是数组

推断是不是是数组

认清是不是是数组

有数组:var a = [1,2,3,4,5];

有数组:var a = [1,2,3,4,5];

有数组:var a = [1,2,3,4,5];

方法一:

方法一:

方法一:

toString.call(a); // “[object Array]”方法二:

toString.call(a); // "[object Array]"
toString.call(a); // "[object Array]"

a instanceof Array; //true方法三:

方法二:

方法二:

a.constructor == Array; //true
第3种办法比较通用,也正是Object.prototype.toString.call(a)的简写。

a instanceof Array; //true
a instanceof Array; //true

instanceof和constructor推断的变量,必须在脚下页面表明的,比方,三个页面(父页面)有贰个框架,框架中引用了贰个页面(子页面),在子页面中宣称了3个a,并将其赋值给父页面包车型大巴贰个变量,那时决断该变量,Array
== object.constructor会重临false;

方法三:

方法三:

var a = [1,2,3,4,5];
console.log(toString.call(a)); // "[object Array]"      
console.log(a instanceof Array); //true
console.log(a.constructor == Array); //true
a.constructor == Array; //true
a.constructor == Array; //true

剖断是还是不是是空对象

先是种情势相比较通用,也正是Object.prototype.toString.call(a)的简写。

第3种艺术比较通用,也正是Object.prototype.toString.call(a)的简写。

有变量:var obj = {};

instanceofconstructor认清的变量,必须在当下页面注明的,例如,多个页面(父页面)有多个框架,框架中援引了一个页面(子页面),在子页面中扬言了二个a,并将其赋值给父页面包车型地铁三个变量,那时剖断该变量,Array == object.constructor会返回false

instanceofconstructor推断的变量,必须在时下页面注脚的,比方,三个页面(父页面)有1个框架,框架中援引了2个页面(子页面),在子页面中扬言了二个a,并将其赋值给父页面包车型客车二个变量,那时推断该变量,Array == object.constructor会返回false

方法一:

var a = [1,2,3,4,5];
console.log(toString.call(a)); // "[object Array]"                     
console.log(a instanceof Array); //true
console.log(a.constructor == Array); //true
var a = [1,2,3,4,5];
console.log(toString.call(a)); // "[object Array]"                     
console.log(a instanceof Array); //true
console.log(a.constructor == Array); //true

JSON.stringify(obj); // “{}”通过转移成JSON对象来剖断是不是是台湾空中大学括号

 

 

方法二:

判定是不是是空对象

认清是还是不是是空对象

if(obj.id){
//假诺属性id存在….}那个艺术比较土,大大多人都能想到,前提是得领会对象中有某些属性。

有变量:var obj = {};

有变量:var obj = {};

方法三:

方法一:

方法一:

function isEmptyObject(e) { 
var t; for (t in e) return !1; return !0 } //trueisEmptyObject(obj);
//falseisEmptyObject({ "a":1, "b":2});
JSON.stringify(obj); // "{}"
JSON.stringify(obj); // "{}"

本条点子是jQuery的isEmptyObject()方法的得以落成形式。

透过改造来JSON对象来判定是还是不是是台湾空中大学括号

经过转移成JSON对象来判别是或不是是台湾空中大学括号

上述那篇基于javascript中的typeof和花色判定(详解)便是小编分享给大家的全体内容了,希望能给我们贰个参考,也愿意大家多多协助脚本之家。

方法二:

方法二:

您恐怕感兴趣的篇章:

  • 关于JavaScript和jQuery的门类剖断详解
  • 浅谈js数据类型判定与数组判别
  • js推断上传文件类型剖断FileUpload文件类型代码
  • javascript中怎么办靶子的品类剖断
  • JavaScript
    页面编码与浏览器类型推断代码
  • javascript
    类型剖断代码分析
  • isArray()函数(JavaScript中目的类型决断的两种方式)
  • 详解js类型决断
if(obj.id){ //如果属性id存在....}
if(obj.id){ //如果属性id存在....}

本条点子比较土,大多数人都能想到,前提是得清楚对象中有某些属性。

这几个法子比较土,大诸多人都能体会驾驭,前提是得清楚对象中有有些属性。

方法三:

方法三:

function isEmptyObject(e) { var t; for (t in e) return !1; return !0 } //trueisEmptyObject(obj); //falseisEmptyObject({ "a":1, "b":2});
function isEmptyObject(e) { var t; for (t in e) return !1; return !0 } //trueisEmptyObject(obj); //falseisEmptyObject({ "a":1, "b":2});

以此艺术是jQuery的isEmptyObject()方法的得以落成情势。

其一法子是jQuery的isEmptyObject()方法的得以落成方式。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website