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

  • 相关阅读:
    Linux基础操作
    MySQL基础常用指令
    String什么时候创建一个新对象?
    HashMap源码浅析
    LinkList源码浅析
    ArrayList源码浅析
    如何解决syntax error near unexpected token `fi'
    如何解决The request sent by the client was syntactically incorrect.
    Caused by: java.lang.IllegalArgumentException: Invalid <url-pattern> ajaxTest in servlet mapping
    CLUSTER cluster is down,redis报错
  • 原文地址:https://www.cnblogs.com/wyongz/p/11325928.html
Copyright © 2011-2022 走看看