• Javascript检测值


    检测原始值用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。

  • 相关阅读:
    1001 字符串“水”题(二进制,map,哈希)
    hzau 1210 Happiness
    hzau 1209 Deadline(贪心)
    hzau 1208 Color Circle(dfs)
    hzau 1207 Candies
    hzau 1206 MathematicalGame
    hzau 1205 Sequence Number(二分)
    hzau 1204 Escape from the Darkness
    Calculator 2
    Calculator
  • 原文地址:https://www.cnblogs.com/junhey/p/6979914.html
Copyright © 2020-2023  润新知