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 getStyle获取最终样式函数代码
Apr 01 Javascript
用javascript对一个json数组深度赋值示例
Jul 27 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
Aug 21 Javascript
浅析javascript中的事件代理
Nov 06 Javascript
require、backbone等重构手机图片查看器
Nov 17 Javascript
bootstrapValidator bootstrap-select验证不可用的解决办法
Jan 11 Javascript
微信小程序实战之自定义抽屉菜单(7)
Apr 18 Javascript
vue插件vue-resource的使用笔记(小结)
Aug 04 Javascript
聊聊JS动画库 Velocity.js的使用
Mar 13 Javascript
jQuery实现获取form表单内容及绑定数据到form表单操作分析
Jul 03 jQuery
JS实现数组去重,显示重复元素及个数的方法示例
Jan 21 Javascript
记录微信小程序 height: calc(xx - xx);无效问题
Dec 30 Javascript
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中操作MySQL数据库的一些要注意的问题
2006/10/09 PHP
PHP校验ISBN码的函数代码
2011/01/17 PHP
php中计算程序运行时间的类代码
2012/11/03 PHP
PHP获取数组中某元素的位置及array_keys函数应用
2013/01/29 PHP
smarty 缓存控制前的页面静态化原理
2013/03/15 PHP
php实现按文件名搜索文件的远程文件查找器
2014/05/10 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
2014/06/09 PHP
Linux下php5.4启动脚本
2014/08/03 PHP
thinkPHP框架自动填充原理与用法分析
2018/04/03 PHP
laravel-admin解决表单select联动时,编辑默认没选上的问题
2019/09/30 PHP
简单的JS多重继承示例
2008/03/13 Javascript
Array.prototype 的泛型应用分析
2010/04/30 Javascript
JavaScript中使用stopPropagation函数停止事件传播例子
2014/08/27 Javascript
浅谈javascript中onbeforeunload与onunload事件
2015/12/10 Javascript
学习使用AngularJS文件上传控件
2016/02/16 Javascript
Vuejs第十三篇之组件——杂项
2016/09/09 Javascript
Javascript 实现微信分享(QQ、朋友圈、分享给朋友)
2016/10/21 Javascript
Bootstrap中data-target 到底是什么
2017/02/14 Javascript
给vue项目添加ESLint的详细步骤
2017/09/29 Javascript
JS使用正则表达式判断输入框失去焦点事件
2019/10/16 Javascript
让mocha支持ES6模块的方法实现
2020/01/14 Javascript
vue组件创建的三种方式小结
2020/02/03 Javascript
在Django的视图中使用数据库查询的方法
2015/07/16 Python
pandas 快速处理 date_time 日期格式方法
2018/11/12 Python
python基于FTP实现文件传输相关功能代码实例
2019/09/28 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
python获取百度热榜链接的实例方法
2020/08/25 Python
使用CSS3中的calc()属性来以算式表达尺寸数值
2016/06/06 HTML / CSS
体验完美剃须:The Art of Shaving
2018/08/06 全球购物
介绍一下Java的事务处理
2012/12/07 面试题
出国留学介绍信
2014/01/13 职场文书
打架检讨书400字
2014/01/17 职场文书
实习单位指导教师评语
2014/12/30 职场文书
2015年留守儿童工作总结
2015/05/22 职场文书
如何书写公司员工保密协议?
2019/06/27 职场文书
Python OpenCV实现图像模板匹配详解
2022/04/07 Python