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 相关文章推荐
在网页中控制wmplayer播放器
Jul 01 Javascript
AngularJS入门教程之Hello World!
Dec 06 Javascript
AngularJS 单元测试(一)详解
Sep 21 Javascript
javascript编程实现栈的方法详解【经典数据结构】
Apr 11 Javascript
使用InstantClick.js让页面提前加载200ms
Sep 12 Javascript
JS实现点击链接切换显示隐藏内容的方法
Oct 19 Javascript
vue中引用阿里字体图标的方法
Feb 10 Javascript
不得不知的ES6小技巧
Jul 28 Javascript
JavaScript日期工具类DateUtils定义与用法示例
Sep 03 Javascript
three.js实现圆柱体
Dec 30 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
Sep 04 Javascript
浅谈js中的attributes和Attribute的用法与区别
Jul 16 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扩展函数
2006/10/09 PHP
php下载远程文件类(支持断点续传)
2008/11/14 PHP
Smarty Foreach 使用说明
2010/03/23 PHP
php快速url重写 更新版[需php 5.30以上]
2010/04/20 PHP
Yii2中事务的使用实例代码详解
2016/09/07 PHP
cnblogs中在闪存中屏蔽某人的实现代码
2010/11/14 Javascript
JavaScript实现动态创建CSS样式规则方案
2014/09/06 Javascript
使用nodejs开发cli项目实例
2015/06/03 NodeJs
jquery实现可旋转可拖拽的文字效果代码
2016/01/27 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
2016/02/01 Javascript
深入解析Javascript闭包的功能及实现方法
2016/07/10 Javascript
利用JQuery阻止事件冒泡
2016/12/01 Javascript
js原生Ajax的封装和原理详解
2017/03/11 Javascript
详解nodeJS之路径PATH模块
2017/05/31 NodeJs
JavaScript实现打印星型金字塔功能实例分析
2017/09/27 Javascript
Three.js实现简单3D房间布局
2018/12/30 Javascript
Vue在 Nuxt.js 中重定向 404 页面的方法
2019/04/23 Javascript
[01:51]开启你的城市传奇 完美世界城市挑战赛开始报名
2018/10/09 DOTA
jupyter安装小结
2016/03/13 Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
2018/09/13 Python
python版本五子棋的实现代码
2018/12/11 Python
浅谈python中真正关闭socket的方法
2018/12/18 Python
Python获取二维数组的行列数的2种方法
2020/02/11 Python
小 200 行 Python 代码制作一个换脸程序
2020/05/12 Python
北美Newegg打造的全球尖货海购平台:tt海购
2018/09/28 全球购物
材料化学应届生求职信
2013/10/09 职场文书
茶叶店创业计划书范文
2014/01/19 职场文书
会计专业毕业自荐书范文
2014/02/08 职场文书
就业推荐表自我鉴定
2014/03/21 职场文书
教师党员承诺书
2014/03/25 职场文书
学校2015年纠风工作总结
2015/05/15 职场文书
拯救大兵瑞恩观后感
2015/06/09 职场文书
婚礼上证婚人致辞
2015/07/28 职场文书
幼儿园开学家长寄语(2016春季)
2015/12/03 职场文书
MySQL数字类型自增的坑
2021/05/07 MySQL
JavaScript 对象创建的3种方法
2021/11/17 Javascript