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返回iframe中frameBorder属性值的方法
Apr 01 Javascript
JQuery判断radio(单选框)是否选中和获取选中值方法总结
Apr 15 Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
Aug 07 Javascript
Vue方法与事件处理器详解
Dec 01 Javascript
关于iframe跨域POST提交的方法示例
Jan 15 Javascript
轻松实现jQuery添加删除按钮Click事件
Mar 13 Javascript
vuejs事件中心管理组件间的通信详解
Aug 09 Javascript
简单理解Vue中的nextTick方法
Jan 30 Javascript
vue表单自定义校验规则介绍
Aug 28 Javascript
Vue路由模块化配置的完整步骤
Aug 14 Javascript
详解vue 自定义组件使用v-model 及探究其中原理
Oct 11 Javascript
jQuery实现可以扩展的日历
Dec 01 jQuery
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中4个加速、缓存扩展的区别和选用建议
2014/03/12 PHP
php单例模式的简单实现方法
2016/06/10 PHP
Yii2框架BootStrap样式的深入理解
2016/11/07 PHP
php 如何禁用eval() 函数实例详解
2016/12/01 PHP
深入浅出讲解:php的socket通信原理
2016/12/03 PHP
javascript的事件描述
2006/09/08 Javascript
jquery 必填项判断表单是否为空的方法
2008/09/14 Javascript
javascript定时保存表单数据的代码
2011/03/17 Javascript
js实现两点之间画线的方法
2015/05/12 Javascript
jquery.fastLiveFilter.js实现输入自动过滤的方法
2015/08/11 Javascript
jquery Deferred 快速解决异步回调的问题
2016/04/05 Javascript
JavaScript实现Fly Bird小游戏
2016/12/15 Javascript
Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容
2017/06/17 Javascript
JavaScript中的一些实用小技巧总结
2019/04/07 Javascript
使用express获取微信小程序二维码小记
2019/05/21 Javascript
vue cli3 调用百度翻译API翻译页面的实现示例
2019/09/13 Javascript
node.js express捕获全局异常的三种方法实例分析
2019/12/27 Javascript
[01:31]DOTA2上海特级锦标赛 SECRET战队完整宣传片
2016/03/16 DOTA
实例讲解Python中函数的调用与定义
2016/03/14 Python
实现python版本的按任意键继续/退出
2016/09/26 Python
python中requests小技巧
2017/05/10 Python
Python基于tkinter模块实现的改名小工具示例
2017/07/27 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
python实现三种随机请求头方式
2021/01/05 Python
Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)
2021/01/29 Python
HTML5实现文件断点续传的方法
2017/01/04 HTML / CSS
DHC中国官方购物网站:日本通信销售No.1化妆品
2016/08/20 全球购物
世界上最好的旅行夹克:BauBax
2018/12/23 全球购物
美国汽车零部件和配件网站:CarParts
2019/03/13 全球购物
个人学习党的群众路线教育实践活动心得体会
2014/11/05 职场文书
2014年财政局工作总结
2014/12/09 职场文书
工作简历的自我评价
2019/05/16 职场文书
JavaGUI模仿QQ聊天功能完整版
2021/07/04 Java/Android
Vue Element-ui表单校验规则实现
2021/07/09 Vue.js
基于python定位棋子位置及识别棋子颜色
2021/07/26 Python
vue整合百度地图显示指定地点信息
2022/04/06 Vue.js