编写可维护的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
编写可维护的JavaScript-随笔(六)的更多相关文章
- 【读书笔记】读《编写可维护的JavaScript》 - 编程实践(第二部分)
本书的第二个部分总结了有关编程实践相关的内容,每一个章节都非常不错,捡取了其中5个章节的内容.对大家组织高维护性的代码具有辅导作用. 5个章节如下—— 一.UI层的松耦合 二.避免使用全局变量 三.事 ...
- 《编写可维护的JavaScript》之编程实践
最近读完<编写可维护的JavaScript>,让我受益匪浅,它指明了编码过程中,需要注意的方方面面,在团队协作中特别有用,可维护性是一个非常大的话题,这本书是一个不错的起点. 本书虽短,却 ...
- 编写可维护的Javascript读书笔记
写在前面:之前硬着头皮参加了java方面的编程规范培训,收货良多,工作半年有余的时候,总算感觉到一丝丝Coding之美,以及造轮子的乐趣,以至于后面开发新功能的时候,在Coding style方面花了 ...
- 《编写可维护的javascript》读书笔记(中)——编程实践
上篇读书笔记系列之:<编写可维护的javascript>读书笔记(上) 上篇说的是编程风格,记录的都是最重要的点,不讲废话,写的比较简洁,而本篇将加入一些实例,因为那样比较容易说明问题. ...
- 《编写可维护的javascript》读书笔记(上)
最近在读<编写可维护的javascript>这本书,为了加深记忆,简单做个笔记,同时也让没有读过的同学有一个大概的了解. 一.编程风格 程序是写给人读的,所以一个团队的编程风格要保持一致. ...
- 编写可维护的JavaScript 收纳架
如果你看过Nicolas C.Zakas写过的任何作品,你必须承认他是个不折不扣的天才.也只有天才级的才能写出<JavaScript高级程序设计>让所有的前端攻城师人手一本.Nicolas ...
- 编写可维护的JavaScript之编程风格
在团队中只有每个人的编程风格一致,大家才能方便的互相看懂和维护对方的代码. 1. 层级缩进 对于层级缩进目前有两种主张:1)使用制表符这种方法有两种好处,第一,制表符和缩进层级之间是一一对应关系,符合 ...
- 《编写可维护的JavaScript》 笔记
<编写可维护的JavaScript> 笔记 我的github iSAM2016 概述 本书的一开始介绍了大量的编码规范,并且给出了最佳和错误的范例,大部分在网上的编码规范看过,就不在赘述 ...
- 编写可维护的JavaScript代码(部分)
平时使用的时VS来进行代码的书写,VS会自动的将代码格式化,所有写了这么久的JS代码,也没有注意到这些点.看了<编写可维护的javascript代码>之后,做了些笔记. var resul ...
- 推荐一本好书:编写可维护的JavaScript(可下载)
目录 推荐一本好书:编写可维护的JavaScript(可下载) 书摘: 下载: 有些建议: 推荐一本好书:编写可维护的JavaScript(可下载) 书摘: 很多设计模式就是为了解决紧耦合的问题.如果 ...
随机推荐
- Nginx反向代理服务器的安装与配置
Nginx反向代理服务器的安装与配置 时间:10月19日 Nginx反向代理有不少需要我们解决的问题,其中有不少问题是基于安装上的问题,在安装完成后的相关调试也让很多人头疼不已.下面就向大家介绍有关于 ...
- NOIP 2004 联合权值
洛谷 P1351 联合权值 洛谷传送门 JDOJ 2886: [NOIP2014]联合权值 D1 T2 JDOJ传送门 Description 无向连通图 G有 n个点,n-1条边.点从 1到 n依次 ...
- 小程序开发第一天josn和wxml
视频中只有app.josn路径还有wxm文本.js中没有调用page.原视频中是可以出来文本内容的. 但是把js调用page以后是可以呈现的 所以疑问点就是为什么以前可以? 1.微信开发工具改了,强制 ...
- LeetCode 1213. Intersection of Three Sorted Arrays
原题链接在这里:https://leetcode.com/problems/intersection-of-three-sorted-arrays/ 题目: Given three integer a ...
- django请求限制
django.views.decorators.http 包里的装饰器可以基于请求的方法来限制对视图的访问. 限制视图只能服务规定的http方法.用法: from django.views.decor ...
- ESA2GJK1DH1K基础篇: 购买云服务器
我选择的是购买阿里云的服务器 如果是学生,可以选择 因为我用学生账户买过了,所以过程没法写了,下面我就写不用学生账户买的过程,其实应该配置过程和学生买差不多 选择购买的配置 选择系统 不需要配置直接下 ...
- Django MySQL 数据库连接
Django 1.11 官方文档 常规说明 数据库连接 CONN_MAX_AGE 定义数据库连接时限(ALL) default:0 保存在每个请求结束时关闭数据库连接的历史行为. None:保持长连接 ...
- 编写一个方法去掉数组里面重复的内容 var arr=['abc','abcd','sss','2','d','t','2','ss','f','22','d'];
function noRepeat(arr) { var arr1 = []; for (var i = 0; i < arr.length; i++) { var item = arr[i]; ...
- centos6中安装新版 Elasticsearch 7.x
es出新版了,虽然公司里还是用的老版本,但是本地还是有必要自己安装了玩玩 下载地址:https://www.elastic.co/cn/downloads/elasticsearch 那么一般来说还是 ...
- LOJ6115 汇合 树上分块
本题空间很小,那些O(nlogn)的树上lca算法在这里不顶用了,可以考虑树分块. 本题的树分块是基于深度的,即按深度每\(\sqrt n\)分一块,然后一块一块往上跳,一直跳到lca处. 对于这题, ...