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 相关文章推荐
在页面上用action传递参数到后台出现乱码的解决方法
Dec 31 Javascript
jQuery实现数秒后自动提交form的方法
Mar 05 Javascript
javascript动态生成树形菜单的方法
Nov 14 Javascript
写给小白的JavaScript引擎指南
Dec 04 Javascript
基于jQuery实现左右图片轮播(原理通用)
Dec 24 Javascript
第一次接触神奇的Bootstrap导航条
Aug 09 Javascript
AJAX和jQuery动态加载数据的实现方法
Dec 05 Javascript
javaScript 逻辑运算符使用技巧整理
May 03 Javascript
在Vue中使用highCharts绘制3d饼图的方法
Feb 08 Javascript
详解Vue单元测试case写法
May 24 Javascript
js实现简单音乐播放器
Jun 30 Javascript
javascript局部自定义鼠标右键菜单
Dec 08 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 isset()及empty()用法区别详解
2020/08/29 PHP
JQuery打造PHP的AJAX表单提交实例
2009/11/03 Javascript
cnblogs中在闪存中屏蔽某人的实现代码
2010/11/14 Javascript
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
js写的评论分页(还不错)
2013/12/23 Javascript
javascript中解析四则运算表达式的算法和示例
2014/08/11 Javascript
JavaScript生成福利彩票双色球号码
2015/05/15 Javascript
基于vue的下拉刷新指令和滚动刷新指令
2016/12/23 Javascript
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
2017/06/01 jQuery
一次围绕setTimeout的前端面试经验分享
2017/06/15 Javascript
Vue的Flux框架之Vuex状态管理器
2017/07/30 Javascript
jQuery DOM节点的遍历方法小结
2017/08/15 jQuery
angularjs数组判断是否含有某个元素的实例
2018/02/27 Javascript
vue监听键盘事件的快捷方法【推荐】
2018/07/11 Javascript
vue watch关于对象内的属性监听
2019/04/22 Javascript
原生js实现的金山打字小游戏(实例代码详解)
2020/03/16 Javascript
Node.js中出现未捕获异常的处理方法
2020/06/29 Javascript
Python的设计模式编程入门指南
2015/04/02 Python
python中csv文件的若干读写方法小结
2018/07/04 Python
python 把列表转化为字符串的方法
2018/10/23 Python
浅谈pyqt5在QMainWindow中布局的问题
2019/06/21 Python
python logging模块书写日志以及日志分割详解
2019/07/22 Python
django删除表重建的实现方法
2019/08/28 Python
Python进程,多进程,获取进程id,给子进程传递参数操作示例
2019/10/11 Python
wxPython+Matplotlib绘制折线图表
2019/11/19 Python
Django自定义全局403、404、500错误页面的示例代码
2020/03/08 Python
使用Python内置模块与函数进行不同进制的数的转换
2020/04/26 Python
python框架flask入门之路由及简单实现方法
2020/06/07 Python
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
HTML5 Video标签的属性、方法和事件汇总介绍
2015/04/24 HTML / CSS
俄罗斯首家面向中国消费者的一站式购物网站:Wruru
2020/05/08 全球购物
《大自然的语言》教学反思
2014/04/08 职场文书
入党综合考察材料
2014/06/02 职场文书
综合实践活动报告
2015/02/05 职场文书
首席执行官观后感
2015/06/03 职场文书
2016年秋季运动会通讯稿
2015/11/25 职场文书