JavaScript“尽快失败”的原则实例详解


Posted in Javascript onOctober 08, 2016

我第一次听说编码原则中有“尽快失败”这一条时,觉得很奇怪,为什么代码要失败?应该成功才对呀。但事实上,当代码在遇到错误的时候应该尽快的终止。为了检测各种状态,我们需要频繁的创建if语句与条件分支,而这些条件检测的结果不是成功就是失败(true&&false)。之所以会有这么多的条件检测语句,是因为如果不在构建过程中植入这些监测点(checkpoint),那么浏览器内核会执行很多无用的代码,并占用许多宝贵的CPU性能和处理时间,拖慢网站加载速度。

根据那些判断结果为false的检测语句块放置位置的不同,有些情况下,一旦发生错误就迅速中止,而另外一些情况下则会在执行了很长一段时间的无用代码后才终止。如果我们在遍历数组之前先检测其长度,或是在处理DOM时先看看有没有我们需要的class属性,那么就可以在不满足条件时立刻中止代码的执行。因为遍历数组信息与解析DOM都是相当耗时的工作,所以最好是在执行这些任务之前先检测一下,在满足于执行条件时及早终止。正是基于上述原因,所以我才要提倡那种“尽快失败”的代码。

这是我的示例代码:

//创建在遇到错误时尽快终止的代码
(function Salad(totalSlices,peopleCount){ //我要创建一个沙拉函数,用来返回派对需要的总沙拉数量
"use strict";
var fairness = totalSlices * peopleCount;
return fairness;
})();
(function () {
"use strict";
var body = document.getElementsByTagName("body")[0],
//我在此闭包函数中建立了一些变量,并将其传入salad函数以供计算
partyStarter = "starlen",
peopleCount = 18,
Salad = 6,
sliceCount = Salad * 3;
if(peopleCount > 0 && Salad >0){
//先检测一下我们的派对有没有人或沙拉,避免js消耗不必要的计算性能
body.innerHTML += " '<p>'"+ partyStarter +","+ Salad(peopleCount,Salad) +" '</p>' "
} else {
body.innerHTML += "<p>参加聚会的人数或沙拉果盘不足!</p>"
}
})();

在输出某些变量信息之前,我们首先检查确保这些变量信息是否保存于内存之中或者某些数组内的变量是否大于0,从而回避那些不需要执行那些计算代码了。这是在日常的开发工作中基础且重要的易引发性能的问题,所以要重视。

以上所述是小编给大家介绍的JavaScript“尽快失败”的原则实例详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
心扬JS分页函数代码
Sep 10 Javascript
JavaScript去掉空格的方法集合
Dec 28 Javascript
从零开始学习jQuery (六) jquery中的AJAX使用
Feb 23 Javascript
7个有用的jQuery代码片段分享
May 19 Javascript
详解JavaScript对象序列化
Jan 19 Javascript
JavaScript SweetAlert插件实现超酷消息警告框
Jan 28 Javascript
利用JS屏蔽页面中的Enter按键提交表单的方法
Nov 25 Javascript
canvas压缩图片转换成base64格式输出文件流
Mar 09 Javascript
jacascript DOM节点——元素节点、属性节点、文本节点
Apr 18 Javascript
关于使用js算总价的问题
Jun 23 Javascript
vue-cli4.x创建企业级项目的方法步骤
Jun 18 Javascript
vue element-ul实现展开和收起功能的实例代码
Nov 25 Vue.js
jQuery如何解决IE输入框不能输入的问题
Oct 08 #Javascript
微信小程序 canvas API详解及实例代码
Oct 08 #Javascript
微信小程序 animation API详解及实例代码
Oct 08 #Javascript
AngularJS实践之使用NgModelController进行数据绑定
Oct 08 #Javascript
Bootstrap Navbar Component实现响应式导航
Oct 08 #Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
Oct 08 #Javascript
JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端
Oct 08 #Javascript
You might like
PHP学习笔记之三 数据库基本操作
2011/01/17 PHP
教你php如何实现验证码
2016/01/20 PHP
safari下载文件自动加了html后缀问题
2018/11/09 PHP
JavaScript 图像动画的小demo
2012/05/23 Javascript
通过jQuery源码学习javascript(三)
2012/12/27 Javascript
ExtJs设置GridPanel表格文本垂直居中示例
2013/07/15 Javascript
javascript简单实现表格行间隔显示颜色并高亮显示
2013/11/29 Javascript
在JavaScript中使用timer示例
2014/05/08 Javascript
点击表单提交时出现jQuery没有权限的解决方法
2014/07/23 Javascript
JavaScript 中对象的深拷贝
2016/12/04 Javascript
浅谈Vue.js应用的四种AJAX请求数据模式
2017/08/30 Javascript
vue获取dom元素注意事项
2017/12/28 Javascript
详解webpack之scss和postcss-loader的配置
2018/01/09 Javascript
[原创]jQuery实现合并/追加数组并去除重复项的方法
2018/04/11 jQuery
jQuery实现图片上传预览效果功能完整实例【测试可用】
2018/05/28 jQuery
在vue中使用公共过滤器filter的方法
2018/06/26 Javascript
超好用的jQuery分页插件jpaginate用法示例【附源码下载】
2018/12/06 jQuery
基于ssm框架实现layui分页效果
2019/07/27 Javascript
webpack + vue 打包生成公共配置文件(域名) 方便动态修改
2019/08/29 Javascript
vue keep-alive的简单总结
2021/01/25 Vue.js
Python语言技巧之三元运算符使用介绍
2013/03/04 Python
使用setup.py安装python包和卸载python包的方法
2013/11/27 Python
十条建议帮你提高Python编程效率
2016/02/16 Python
Python通过属性手段实现只允许调用一次的示例讲解
2018/04/21 Python
Django分页查询并返回jsons数据(中文乱码解决方法)
2018/08/02 Python
Python发送邮件测试报告操作实例详解
2018/12/08 Python
python3.6中@property装饰器的使用方法示例
2019/08/17 Python
使用Matplotlib绘制不同颜色的带箭头的线实例
2020/04/17 Python
python 实现百度网盘非会员上传超过500个文件的方法
2021/01/07 Python
python中xlrd模块的使用详解
2021/02/01 Python
英国知名的护肤彩妆与时尚配饰大型综合零售电商:Unineed
2016/11/21 全球购物
荷兰街头时尚之家:Funkie House
2019/03/18 全球购物
购买正版游戏和游戏激活码:Green Man Gaming
2019/11/06 全球购物
党员个人思想汇报
2013/12/28 职场文书
就业推荐表导师评语
2014/12/31 职场文书
MySQL kill不掉线程的原因
2021/05/07 MySQL