`
iceman0012
  • 浏览: 11145 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

JavaScript各变量类型判断

    博客分类:
  • JS
 
阅读更多

isNull: function(a){
return a === null;
},
isUndefined: function(a){
return a === undefined;
},
isNumber: function(a){
return typeof a === 'number';
},
isString: function(a){
return typeof a === 'string';
},
isBoolean: function(a){
return typeof a === 'boolean';
},
isPrimitive: function(b){
var a = typeof b;
return !!(b === undefined || b === null || a == 'boolean' || a == 'number' || a == 'string');
},
isArray: function(a){
return proto_obj.toString.call(a) === '[object Array]';
},
isFunction: function(a){
return proto_obj.toString.call(a) === '[object Function]';
},
isPlainObject: function(o){
if (!o || o === win || o === doc || o === doc.body) {
return false;
}
return 'isPrototypeOf' in o && proto_obj.toString.call(o) === '[object Object]';
},
isWindow: function(o){
return o && typeof o === 'object' && 'setInterval' in o;
},
isEmptyObject: function(o){
    for(var a in o) {
return false;
    }
    return true;
}

以上isXX系列中,isUndefined在类库中用的最多。如判断是否传入了某个参数,判断对象是否拥有某个属性等等。但这个函数是不必存在,我已将其移除。理由如下

  1. isUndefined 与 使用全等(===)或typeof 多了一层函数调用。很明显多一层函数调用比直接使用原生的运算符效率会低(虽然有些微不足道),但如果isUndefined调用次数很多如上万次还是很 明显的。我曾经在邮箱框架中加入了该函数,调用次数有4000多次,从性能分析工具看占用了近1%的时间。仅仅一个判断占1%的调用时间还是很可怕的。当 然,邮箱框架内的isUndefined处在多层闭包的顶层,访问其也会占用较多时间。如果这一条还不足以让你放弃isUndefined,请看下面。
  2. 函数从一定程度上是对一些代码的封装,抽象。是组织良好代码的方式之一,且有利于降低代码的复杂性。但isNull/isUndefined/isBoolean/isNumber/isString函数内仅有一句,抽象层次很低。因此完全不必封装而提取出一个函数。
  3. isUndefined(a) 与 a === undefined相比并不会节省几个字节(呵,你可以命名的更短但损失了可读性)。

综上,我去掉了类库中对基本类型判断的isNull/isUndefined/isBoolean/isNumber/isString,需要用到这些判断的时候直接使用typeof运算符等。 

分享到:
评论

相关推荐

    javascript判断一个变量是数组还是对象

    javascript中如何准确判断一个变量是什么,面试中这是考一个人基本功扎不扎实必定会问的一个问题。如果你还不是很清楚,相信这篇文章会对你有所帮助。 一,判断方法 1.typeof 我们能够使用typeof判断变量的身份,...

    JavaScript基于自定义函数判断变量类型的实现方法

    主要介绍了JavaScript基于自定义函数判断变量类型的实现方法,结合实例形式分析了javascript判断变量类型的自定义函数定义与使用方法,并针对不同浏览器给出了相关的分析与说明,需要的朋友可以参考下

    关于JavaScript的变量的数据类型的判断方法

    总的来说,JavaScript的变量类型判断主要依赖typeof操作符,它能够帮助开发者理解变量的基本数据类型。对于数组的特别情况,推荐使用Object.prototype.toString方法来准确判断。开发者在编程时应当充分了解这些基本...

    JavaScript中判断变量是数组、函数或是对象类型的方法

    除此之外,还可以定义几个辅助函数来方便地判断变量类型。例如,可以定义一个函数var isArray来判断变量是否为数组,它结合了Array.isArray和Object.prototype.toString.call的判断逻辑。同样地,也可以定义一个函数...

    javascript 得到变量类型的函数

    因此,了解如何准确地判断JavaScript变量的类型就显得尤为重要。 为了解决这一问题,我们可以通过编写一个自定义函数来达到目的。这个函数能够更详细地识别变量的类型,不仅仅是基本类型,还包括了复杂对象的类型...

    javascript判断变量是否有值的方法

    本文将深入探讨几种常见的方法来检测JavaScript变量是否包含有效值。 首先,我们来看一个基本的示例,变量`a`和`b`分别被赋值为`null`和`undefined`,在JavaScript中,这两种情况都被视为没有值: ```javascript ...

    javascript常用判断函数

    此外,JavaScript还有其他很多内置的判断函数,如`isNaN`、`typeof`等,它们分别用于检测一个值是否为非数字和确定变量的类型。 在编写JavaScript代码时,正确使用这些判断函数能提高代码的健壮性和可维护性。理解...

    详细分析JavaScript变量类型

    在JavaScript中,变量类型可以通过typeof运算符来检测,它会返回一个表示变量类型的字符串。例如: ```*** ***(typeof undefined); // "undefined" ***(typeof null); // "object"(在JavaScript中,null被认为是...

    JavaScript知识点总结(六)之JavaScript判断变量数据类型

    在JavaScript编程语言中,了解如何判断变量的数据类型是非常重要的,因为不同的数据...在实际项目中,正确识别变量类型可以避免许多潜在的错误和意外行为。理解并熟练运用这些判断技巧,可以提高代码的可读性和可靠性。

    JavaScript判断变量是否为空的自定义函数分享

    这个自定义函数`isEmpty`提供了一个比较全面的解决方案来判断JavaScript变量是否为空。开发者在编写代码时,可以直接使用这个函数,根据变量的类型和具体值进行判断,从而在代码中实现复杂逻辑的简化。对于经常需要...

    javascript中检测变量的类型的代码

    在JavaScript中,检测变量类型的代码通常涉及到两种主要的方法:`typeof`操作符和构造函数法。下面我们将详细探讨这两种方法。 首先,`typeof`操作符是JavaScript中用于检测变量类型的最常见方式。它的格式是 `...

    JavaScript中判断函数、变量是否存在

    JavaScript 是一种动态类型的语言,这意味着在运行时变量和函数的类型可以被改变。这种灵活性给开发者带来了便利,但也可能导致运行时错误,尤其是当尝试访问未定义的变量或不存在的函数时。为了防止这种情况,需要...

    JavaScript实例精通 源代码

    1_3.htm JavaScript中的强制类型转换。 1_4.htm 在HTML中为JavaScript传递变量。 1_5.htm 在HTML中引用JavaScript的变量。 1_6.htm 比较undefined和"undefined"。 第2章(\2) 示例描述:客户端的流程控制。 2_1....

    js中判断变量类型函数typeof的用法总结.docx

    ES6及更高版本提供了更多高级特性来帮助检测变量类型,例如: - `Symbol.toStringTag`属性。 - `instanceof`操作符。 #### 五、结论 `typeof`运算符是JavaScript中一个非常有用的工具,能够帮助开发者了解变量的...

    JavaScript基础复习大纲

    重点提示 `int short boolean,float` 这些都是保留值,可以先告诉学员 JavaScript 中声明变量是不需要指定类型的。 八、JavaScript 的基本语法 JavaScript 中的标识符,与 Java 定义标识符一摸一样。JavaScript ...

Global site tag (gtag.js) - Google Analytics