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在类库中用的最多。如判断是否传入了某个参数,判断对象是否拥有某个属性等等。但这个函数是不必存在,我已将其移除。理由如下
- isUndefined 与 使用全等(===)或typeof 多了一层函数调用。很明显多一层函数调用比直接使用原生的运算符效率会低(虽然有些微不足道),但如果isUndefined调用次数很多如上万次还是很 明显的。我曾经在邮箱框架中加入了该函数,调用次数有4000多次,从性能分析工具看占用了近1%的时间。仅仅一个判断占1%的调用时间还是很可怕的。当 然,邮箱框架内的isUndefined处在多层闭包的顶层,访问其也会占用较多时间。如果这一条还不足以让你放弃isUndefined,请看下面。
- 函数从一定程度上是对一些代码的封装,抽象。是组织良好代码的方式之一,且有利于降低代码的复杂性。但isNull/isUndefined/isBoolean/isNumber/isString函数内仅有一句,抽象层次很低。因此完全不必封装而提取出一个函数。
- isUndefined(a) 与 a === undefined相比并不会节省几个字节(呵,你可以命名的更短但损失了可读性)。
综上,我去掉了类库中对基本类型判断的isNull/isUndefined/isBoolean/isNumber/isString,需要用到这些判断的时候直接使用typeof运算符等。
分享到:
相关推荐
javascript中如何准确判断一个变量是什么,面试中这是考一个人基本功扎不扎实必定会问的一个问题。如果你还不是很清楚,相信这篇文章会对你有所帮助。 一,判断方法 1.typeof 我们能够使用typeof判断变量的身份,...
主要介绍了JavaScript基于自定义函数判断变量类型的实现方法,结合实例形式分析了javascript判断变量类型的自定义函数定义与使用方法,并针对不同浏览器给出了相关的分析与说明,需要的朋友可以参考下
总的来说,JavaScript的变量类型判断主要依赖typeof操作符,它能够帮助开发者理解变量的基本数据类型。对于数组的特别情况,推荐使用Object.prototype.toString方法来准确判断。开发者在编程时应当充分了解这些基本...
除此之外,还可以定义几个辅助函数来方便地判断变量类型。例如,可以定义一个函数var isArray来判断变量是否为数组,它结合了Array.isArray和Object.prototype.toString.call的判断逻辑。同样地,也可以定义一个函数...
因此,了解如何准确地判断JavaScript变量的类型就显得尤为重要。 为了解决这一问题,我们可以通过编写一个自定义函数来达到目的。这个函数能够更详细地识别变量的类型,不仅仅是基本类型,还包括了复杂对象的类型...
本文将深入探讨几种常见的方法来检测JavaScript变量是否包含有效值。 首先,我们来看一个基本的示例,变量`a`和`b`分别被赋值为`null`和`undefined`,在JavaScript中,这两种情况都被视为没有值: ```javascript ...
此外,JavaScript还有其他很多内置的判断函数,如`isNaN`、`typeof`等,它们分别用于检测一个值是否为非数字和确定变量的类型。 在编写JavaScript代码时,正确使用这些判断函数能提高代码的健壮性和可维护性。理解...
在JavaScript中,变量类型可以通过typeof运算符来检测,它会返回一个表示变量类型的字符串。例如: ```*** ***(typeof undefined); // "undefined" ***(typeof null); // "object"(在JavaScript中,null被认为是...
在JavaScript编程语言中,了解如何判断变量的数据类型是非常重要的,因为不同的数据...在实际项目中,正确识别变量类型可以避免许多潜在的错误和意外行为。理解并熟练运用这些判断技巧,可以提高代码的可读性和可靠性。
这个自定义函数`isEmpty`提供了一个比较全面的解决方案来判断JavaScript变量是否为空。开发者在编写代码时,可以直接使用这个函数,根据变量的类型和具体值进行判断,从而在代码中实现复杂逻辑的简化。对于经常需要...
在JavaScript中,检测变量类型的代码通常涉及到两种主要的方法:`typeof`操作符和构造函数法。下面我们将详细探讨这两种方法。 首先,`typeof`操作符是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....
ES6及更高版本提供了更多高级特性来帮助检测变量类型,例如: - `Symbol.toStringTag`属性。 - `instanceof`操作符。 #### 五、结论 `typeof`运算符是JavaScript中一个非常有用的工具,能够帮助开发者了解变量的...
重点提示 `int short boolean,float` 这些都是保留值,可以先告诉学员 JavaScript 中声明变量是不需要指定类型的。 八、JavaScript 的基本语法 JavaScript 中的标识符,与 Java 定义标识符一摸一样。JavaScript ...