美文网首页
Javascript检测值

Javascript检测值

作者: junhey | 来源:发表于2017-06-10 21:52 被阅读13次

检测原始值用typeof

javascript有五种原始类型,分别为字符串、数字、布尔值、null和undefined
判断一个值是什么类型的字符串,可以通过typeof
typeof variable

//检测字符串
if(typeof name == “string”){
    anotherName = name.substring(3);
}

检测引用值(对象)用instanceof

javascript中除了原始值之外的值都是引用,有这样几种内置的引用类型: Object Array Date 和Error,使用typeof判断所有引用类型时都返回object
检测某个引用类型值得最好方法是使用instanceof运算符
value instanceof constructor

//检测日期
if(value instanceof Date){
    console.log(value.getFullYear());
}

检测函数最好的方法是用typeof

检测函数用typeof,因为它可以跨帧(frame)使用,从技术的角度来说,javascript中的函数也是引用类型,同样存在function构造函数每个函数都是其实例

function myFunc(){}
console.log(typeof myFunc === “function”);//true

检测数组用Array.isArray()

开发者发现在instanceof Array在跨域问题帧(frame)之间来回传递数组不总是返回正确的结果

//采用鸭式辩型的方法检测数组
function isArray(value){
    return typeof value.sort === “function”;
}

"鸭式辩型”是作家James Whitcomb Riley 首先提出的概念,即“像鸭子一样走路,游泳并且嘎嘎叫的鸟就是鸭子”,本质上关注“对象能做什么”,而不是关注“对象是什么”
检测数组有很多解决方案,现在ECMAScript5将Array.isArray()正式引入Javascript,唯一的目的就是准确的检测一个值是否为空。IE 9+、FireFox 4+、Safari 5+、Opera 10.5+、Chrome 都实现了Array.isArray()方法。

检测属性使用in运算符

另外一种用到的null以及undefined的场景是当检测一个属性是否在对象中存在是,这个时候判断就会导致错误,判断属性是否存在的最好方法是使用in运算符。比如

var object={
    count:0,
    related:null
};
if(“count” in object){
    //something code
}
if(“related” in object){
    //something code
}

如果只想检查实例对象的某个属性是否存在,则使用hasOwnProperty()方法。

//对于所有非DOM对象来说,这是最好的写法
if(object.hasOwnProperty(“related”)){
    //something code
}
//如果你不确定是否为DOM对象,则可以这样写
if(“hasOwnProperty” in Object && object.hasOwnProperty(‘related’)){
    //something code
}

检测undefined和null用绝对等于===

Undefined类型只有一个值,即undefined。当声明的变量还未被初始化时,变量的默认值为undefined。
Null类型也只有一个值,即null。null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。

ECMAScript认为undefined是从null派生出来的,所以把它们定义为相等的。但是,如果在一些情况下,我们一定要区分这两个值,那应该怎么办呢?可以使用下面的两种方法。

 
alert(null === undefined); //output "false"  
alert(typeof null == typeof undefined); //output "false"  

使用typeof方法在前面已经讲过,null与undefined的类型是不一样的,所以输出"false"。而===代表绝对等于,在这里null === undefined输出false。

相关文章

  • Javascript检测值

    检测原始值用typeof javascript有五种原始类型,分别为字符串、数字、布尔值、null和undefin...

  • JavaScript检测原始值、引用值、属性

    上周写过一篇读书笔记《编写可维护的JavaScript》之编程实践,其中 第8章 避免『空比较』是博主在工作中遇坑...

  • audio元素的属性、方法与事件

    一、标签属性 二、JavaScript方法 1、canPlayType():检测浏览器是否支持音频类型,返回值 [...

  • 你不知道的javaScript(中)

    第一部分 类型和语法 1、值和类型 检测null 值的类型: JavaScript中的变量是没有类型的,只有值才有...

  • JavaScript检测之basevalidate.js

    上篇文章「JavaScript检测原始值、引用值、属性」中涉及了大量有用的代码范例,为了让大家更方便的使用这些代码...

  • audio元素的属性、方法与事件

    一、标签属性 二、JavaScript方法 1、canPlayType():检测浏览器是否支持音频类型,返回值 2...

  • isNaN

    虽然,JavaScript提供了isNaN来检测某个值是否为NaN,但是,这也不太精确的,因为,在调用isNaN函...

  • Form元素使用笔记(节)

    检测input的输入值 检测输入值的合法性 检测是否有值 function testVal(obj){ ...

  • instanceof判断array类型

    javascript有三种方法可以检测一个值是什么类型1、typeof2、instanceof3、Object.p...

  • 二元预测的灵敏度与特异度

    假设有A、B两种用于检测地震的仪器。灵敏度指待实际检测值占检测值的比重。特异度指正确检测值占检测值的比重。 A 仪...

网友评论

      本文标题:Javascript检测值

      本文链接:https://www.haomeiwen.com/subject/ofpcqxtx.html