避免空比较

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

编写可维护的JavaScript-随笔(六)的更多相关文章

  1. 【读书笔记】读《编写可维护的JavaScript》 - 编程实践(第二部分)

    本书的第二个部分总结了有关编程实践相关的内容,每一个章节都非常不错,捡取了其中5个章节的内容.对大家组织高维护性的代码具有辅导作用. 5个章节如下—— 一.UI层的松耦合 二.避免使用全局变量 三.事 ...

  2. 《编写可维护的JavaScript》之编程实践

    最近读完<编写可维护的JavaScript>,让我受益匪浅,它指明了编码过程中,需要注意的方方面面,在团队协作中特别有用,可维护性是一个非常大的话题,这本书是一个不错的起点. 本书虽短,却 ...

  3. 编写可维护的Javascript读书笔记

    写在前面:之前硬着头皮参加了java方面的编程规范培训,收货良多,工作半年有余的时候,总算感觉到一丝丝Coding之美,以及造轮子的乐趣,以至于后面开发新功能的时候,在Coding style方面花了 ...

  4. 《编写可维护的javascript》读书笔记(中)——编程实践

    上篇读书笔记系列之:<编写可维护的javascript>读书笔记(上) 上篇说的是编程风格,记录的都是最重要的点,不讲废话,写的比较简洁,而本篇将加入一些实例,因为那样比较容易说明问题. ...

  5. 《编写可维护的javascript》读书笔记(上)

    最近在读<编写可维护的javascript>这本书,为了加深记忆,简单做个笔记,同时也让没有读过的同学有一个大概的了解. 一.编程风格 程序是写给人读的,所以一个团队的编程风格要保持一致. ...

  6. 编写可维护的JavaScript 收纳架

    如果你看过Nicolas C.Zakas写过的任何作品,你必须承认他是个不折不扣的天才.也只有天才级的才能写出<JavaScript高级程序设计>让所有的前端攻城师人手一本.Nicolas ...

  7. 编写可维护的JavaScript之编程风格

    在团队中只有每个人的编程风格一致,大家才能方便的互相看懂和维护对方的代码. 1. 层级缩进 对于层级缩进目前有两种主张:1)使用制表符这种方法有两种好处,第一,制表符和缩进层级之间是一一对应关系,符合 ...

  8. 《编写可维护的JavaScript》 笔记

    <编写可维护的JavaScript> 笔记 我的github iSAM2016 概述 本书的一开始介绍了大量的编码规范,并且给出了最佳和错误的范例,大部分在网上的编码规范看过,就不在赘述 ...

  9. 编写可维护的JavaScript代码(部分)

    平时使用的时VS来进行代码的书写,VS会自动的将代码格式化,所有写了这么久的JS代码,也没有注意到这些点.看了<编写可维护的javascript代码>之后,做了些笔记. var resul ...

  10. 推荐一本好书:编写可维护的JavaScript(可下载)

    目录 推荐一本好书:编写可维护的JavaScript(可下载) 书摘: 下载: 有些建议: 推荐一本好书:编写可维护的JavaScript(可下载) 书摘: 很多设计模式就是为了解决紧耦合的问题.如果 ...

随机推荐

  1. 20180706模拟赛T2——染色

    文件名: seq 题目类型: 传统题 时间限制: 1秒 内存限制: 128MB 编译优化: 无 题目描述 小A正在帮助小M刷她家的墙壁 小M家的墙可以分为\(n\)块,每段需要被刷成黑色或者白色.你可 ...

  2. VIJOS-P1320 清点人数

    JDOJ 1427: VIJOS-P1320 清点人数 题目传送门 Description 初始时,火车上没有学生:当同学们开始上火车时,年级主任从第一节车厢出发走到最后一节车厢,每节车厢随时都有可能 ...

  3. Oracle客户端和服务端菜单区别

  4. Docker整合dockerfly实现UI界面管理(单机版)

    一.搜索镜像 docker search dockerfly 二.根据镜像使用排名(一般情况下拉取使用率最高的镜像名),我这里使用的是阿里云镜像地址 docker pull registry.cn-h ...

  5. spring boot2X集成spring cloud config

    Spring Cloud Config 分为 Config Server: 分布式配置中心,是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息 Config Client: 通过指定 ...

  6. solr配置同义词,停止词,和扩展词库(IK分词器为例)

    定义 同义词:搜索结果里出现的同义词.如我们输入”还行”,得到的结果包括同义词”还可以”. 停止词:在搜索时不用出现在结果里的词.比如is .a .are .”的”,“得”,“我” 等,这些词会在句子 ...

  7. 【2019年05月21日】A股ROE最高排名

    个股滚动ROE = 最近4个季度的归母净利润 / ((期初归母净资产 + 期末归母净资产) / 2). 查看更多个股ROE最高排名. 兰州民百(SH600738) - 滚动ROE:86.45% - 滚 ...

  8. spark中的多目录输出及压缩

    最近接到一个需求,需要对spark的结果分目录输出,百度之后找到了解决方案,大多都是spark 按照key分目录输出, 但是在文件当中,会把key也输出出来,在这里以key作为目录是想建hive表时把 ...

  9. git clean解决 GIT error: The following untracked working tree files would be overwritten

    git clean用法:https://www.cnblogs.com/lsgxeva/p/8540476.html :

  10. R语言dataframe的常用操作总结

    前言:近段时间学习R语言用到最多的数据格式就是data.frame,现对data.frame常用操作进行总结,其中函数大部分来自dplyr包,该包由Hadley Wickham所作,主要用于数据的清洗 ...