`

js typeof

 
阅读更多

function compare(a,b){
var
pt = /undefined|number|string|boolean/,
fn = /^(function\s*)(\w*\b)/,
cr = "constructor",
cn = "childNodes",
pn = "parentNode",
ce = arguments.callee;
if(pt.test(typeof a) || pt.test(typeof b) || a === null || b === null){
return a === b || (isNaN(a) && isNaN(b)); //为了方便,此处假定NaN == NaN
}
if(a[cr] !== b[cr]){
return false;
}
switch(a[cr]){
case Date : {
return a.valueOf() === b.valueOf();
};
case Function : {
return a.toString().replace(fn,'$1') === b.toString().replace(fn,'$1'); //硬编码中声明函数的方式会影响到toString的结果,因此用正则进行格式化
};
case Array : {
if(a.length !== b.length){
return false;
}
for(var i=0;i<a.length;i++){
if(!ce(a[i],b[i])){
return false;
}
}
break;
};
default : {
var alen = 0, blen = 0, d;
if(a === b){
return true;
}
if(a[cn] || a[pn] || b[cn] || b[pn]){
return a === b;
}
for(d in a){
alen++ ;
}
for(d in b){
blen++;
}
if(alen !== blen){
return false;
}
for(d in a){
if(!ce(a[d],b[d])){
return false;
}
}
break;
};
}
return true;
}
console.log(compare({},{a:1})); //false
console.log(compare({a:1},{b:2})); //false
console.log(compare({b:2,a:1},{a:1,b:2})); //true
console.log(compare({a:function(){return false;},b:2},{a:function(){return false;},b:2})); //true
console.log(compare([],[])); //true
console.log(compare([2,1],[1,2])); //false
console.log(compare(function(){alert(1)},function(){})); //false
console.log(compare(function aaa(){alert(1)},function(){alert(1)})); //true
console.log(compare(document.getElementsByTagName("a")[0],document.getElementsByTagName("a")[1])); //false
console.log(compare(document.getElementsByTagName("a")[0],document.getElementsByTagName("a")[0])); //true
分享到:
评论
1 楼 yoyo837 2014-07-25  
姐姐,怎么不用代码编辑器...这样看好难受

相关推荐

    JS 使用 typeof 获取数据类型

    这篇博客“JS 使用 typeof 获取数据类型”深入探讨了如何利用`typeof`来识别和处理不同类型的JavaScript数据。 首先,`typeof`返回的是一个字符串,这个字符串描述了变量的类型。它适用于原始数据类型(如`...

    在JavaScript中typeof的用途介绍

    在JavaScript编程语言中,typeof是一个运算符,用于检测变量的数据类型。它能够返回一个表示变量类型的字符串值。尽管typeof在使用过程中非常直观,但它也有一些不太为人所知的特性,以及一些在历史上被认为是错误的...

    js typeof 函数使用初探索

    可以直接使用VS打开直接...1、typeof - 返回值有六种可能:"number," "string," "boolean," "object," "function," 和 "undefined." 2、所以,typeof函数不仅可以判断某一个变量的类型,还是可以判断一个变量是否存在

    JS中typeof与instanceof的区别

    JS 中 typeof 与 instanceof 的区别 在 JavaScript 中,typeof 和 instanceof 是两个常用的运算符,用来判断一个变量是否为空,或者是什么类型的。但是,这两个运算符之间还是有区别的。 typeof 运算符是一个一元...

    JS:typeof instanceof constructor prototype区别

    在JavaScript(JS)编程语言中,确定变量或对象的类型是一项基本且重要的任务。这不仅有助于理解代码的行为,还能在调试、数据验证以及实现特定功能时提供帮助。本文将深入探讨四种常用的方法来识别和判断JavaScript...

    关于js typeof 与 instanceof 判断数据类型区别及开发使用.docx

    `typeof` 是JavaScript中的一个一元操作符,用于返回变量的类型表示。它返回的值是一个字符串,可以用来识别以下几种基本类型: - `undefined`:如果变量未定义或未赋值,`typeof`会返回`"undefined"`。 - `boolean...

    JavaScript typeof, null, 和 undefined

    在JavaScript编程语言中,了解和正确使用数据类型是非常重要的,特别是`typeof`操作符、`null`和`undefined`这三个概念。它们在处理变量和数据时起着关键作用。 `typeof`操作符: `typeof`是JavaScript中的一个一元...

    js中typeof的用法汇总.docx

    在JavaScript中,`typeof`操作符是一种非常重要的工具,用于确定变量或表达式的类型。`typeof`返回一个字符串,表示变量或表达式的数据类型。在JavaScript的`typeof`用法汇总中,我们可以看到它在不同情况下的行为。...

    javascript typeof id===’string’?document.getElementById(id):id解释 原创

    在JavaScript编程语言中,`typeof` 是一个非常重要的操作符,用于检测变量或表达式的类型。这段代码的核心在于使用 `typeof` 和三元运算符来判断传入参数 `id` 的类型,然后根据类型的不同执行不同的操作。让我们...

    javascript typeof的用法与typeof运算符介绍[详细]第1/2页

    在JavaScript编程语言中,typeof运算符是一个非常重要的工具,它允许我们对一个表达式的类型进行检测,并返回表示该类型的数据类型字符串。该运算符通常用于我们需要确定一个变量或表达式的类型时,以便执行一些特定...

    Javascript中typeof 用法小结

    在JavaScript编程中,typeof运算符是用于确定未声明变量、已声明变量、字面量等表达式的类型的一个基本工具。它能够返回一个表示变量或表达式类型的字符串。typeof运算符非常重要,尤其是在进行类型检查和避免类型...

    simple-type:javascript typeof 的增强

    增强 javascript typeof 安装 这个模块是通过 npm 安装的: $ npm install simple-type 示例用法 var simpleType = require ( 'simple-type' ) ; simpleType ( [ 1 , 2 , 3 ] ) === 'array' // true simpleType ...

    js中typeof的用法汇总

    JavaScript中的`typeof`运算符是一种用于检测变量或表达式数据类型的内置工具。它返回一个表示该变量或表达式类型的字符串,比如"undefined"、"boolean"、"number"、"string"、"function"或"object"。然而,`typeof`...

    详解JavaScript中typeof与instanceof用法

    今天写JS代码,遇到动态生成多个名称相同的input复选按钮 需要判断其是否是数组,用到了if (typeof(document.MapCheckMgr.checkid)!=undefined) 以前用得少,就顺便查了一下关于typeof的那些事  typeof用以获取一个...

    Javascript typeof与instanceof的区别

    在JavaScript中,`typeof`和`instanceof`是两种常用的类型检查操作符,它们都用于检测变量的类型,但有着不同的用法和返回结果。理解它们的区别对于编写健壮的JavaScript代码至关重要。 `typeof`是一个一元操作符,...

    js用typeof方法判断undefined类型

    `typeof`是JavaScript中的一个运算符,它返回一个字符串,该字符串描述了运算数的类型。对于任何未声明的变量,`typeof`将返回字符串“undefined”。但值得注意的是,对于声明了但未赋值的变量,使用`typeof`也会...

    javascript typeof id==='string'?document.getElementById(id):id解释 <font color=red>原创</font>

    综上所述,这段代码不仅是一个实用的JavaScript代码片段,也是对多个JavaScript核心概念的综合运用,包括三元运算符、`typeof`操作符、函数定义、标识符命名和相等性比较操作符。对于刚开始学习JavaScript的朋友来说...

    JS中typeof与instanceof之间的区别总结

    在JavaScript中,`typeof`和`instanceof`都是用来检测变量类型的工具,但它们的用法和返回结果有所不同。理解这两个操作符的区别是编写健壮的JavaScript代码的关键。 `typeof`是一个一元运算符,其主要功能是确定...

Global site tag (gtag.js) - Google Analytics