zoukankan      html  css  js  c++  java
  • 编写可维护的JavaScript-随笔(六)

    避免空比较

    If(item !== null){

       item.sort();

    Item.forEach(function(item){

    //执行代码

    }

    }

    }

    以上判断中item期待的是数组类型的,但是如果item是数值或者字符串的话也会进入if执行条件,只进行和null的比较并不是真正安全的

    检测原始值

    如果希望一个值是字符串、数字、布尔值、或者undefined,最佳选择是使用typeof运算符,typeof会返回一个表示值的类型的字符串

    字符串,typeof返回string

    数字,typeof返回number

    布尔值,typeof返回boolean

    undefined,typeof返回undefined

    语法形式:①、typeof variable  ②、typeof(variable)

    未定义的变量和值为undefined的变量通过typeof都返回undefined

    typeof null 返回object

    一般不使用null进行检测,除非所期望的值真的是null,应当使用全等与null进行比较

    检测引用值

    引用值也成为对象,几种引用类型:object、array、date、error

    引用对象使用typeof检测返回值都是object

    检测某个引用值的类型的最好方法是使用instanceof运算符

    基本语法:value instanceof constructor(引用类型)

    Instanceof不仅检测这个对象的构造器,还检测原型链,默认情况下,每个对象都继承自object,一次每个对象 value instanceof Object 都返回true

    函数和数组一般用不着使用instanceof

    检测函数最好的方法是使用typeof返回function

    检测数组的最古老的方法是鸭式辨型,通过检测目标变量是否有sort方法

    更优雅的解决方案:Object.prototype.toString.call(value) === “[object Array]”

    检测属性

    当检测一个属性是否在对象中存在时

    //不好的写法

    If(object[propertyName]){

    //一些代码

    }

    If(object[propertyName] != null){

    //一些代码

    }

    If(object[propertyName] != undefined){

    //一些代码

    }

    以上的写法实际是通过给定的名字检查属性的值,当值为0,空字符串,false,null和undefined时判断就会出现错误。

    判断属性是否存在最好的方法是使用in运算符

    var object = {

    count:0,

    related:null

    }

    //好的写法

    if(“count” in object){

    //执行的代码

    }

    如果指向检测实例对象中的某个属性是否存在,则使用hasOwnProperty()方法,实例中存在这个属性则返回true,如果这个属性只存在于原型中则返回false

  • 相关阅读:
    imagemagick-图片
    selenium-嘿
    centos命令行连接无线网络
    centos7安装桌面合盖不休眠
    mysql执行命令:ERROR 1820 (HY000): You must reset your password
    编码规范 C++
    Docker使用总结
    JAVA使用总结
    VS IDE 相关
    编程网站总结
  • 原文地址:https://www.cnblogs.com/wyongz/p/11325928.html
Copyright © 2011-2022 走看看