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 相关文章推荐
在IE和VB中支持png图片透明效果的实现方法(vb源码打包)
Apr 01 Javascript
节点的插入之append()和appendTo()的用法介绍
Jan 13 Javascript
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
Mar 13 Javascript
jquery的clone方法应用于textarea和select的bug修复
Jun 26 Javascript
Enter回车切换输入焦点实现思路与代码兼容各大浏览器
Sep 01 Javascript
javascript中通过arguments参数伪装方法重载
Oct 08 Javascript
jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
Aug 21 Javascript
Jquery中request和request.form和request.querystring的区别
Nov 26 Javascript
discuz表情的JS提取方法分析
Mar 22 Javascript
vue.js如何更改默认端口号8080为指定端口的方法
Jul 14 Javascript
Vue.JS项目中5个经典Vuex插件
Nov 28 Javascript
vue动态路由:路由参数改变,视图不更新问题的解决
Nov 05 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笔记之:日期函数的使用介绍
2013/04/24 PHP
jquery插件之easing使用
2010/08/19 Javascript
ASP.NET jQuery 实例3 (在TextBox里面阻止复制、剪切和粘贴事件)
2012/01/13 Javascript
JS取文本框中最小值的简单实例
2013/11/29 Javascript
javascipt:filter过滤介绍及使用
2014/09/10 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
2016/01/04 Javascript
jQuery Ztree行政地区树状展示(点击加载)
2016/11/09 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
2016/12/08 Javascript
JS基于面向对象实现的多个倒计时器功能示例
2017/02/28 Javascript
Vue.js 中的 $watch使用方法
2017/05/25 Javascript
jquery.validate表单验证插件使用详解
2017/06/21 jQuery
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
jQuery超简单遮罩层实现方法示例
2018/09/06 jQuery
浅谈JS中this在各个场景下的指向
2019/08/14 Javascript
Nodejs实现微信分账的示例代码
2021/01/19 NodeJs
[01:18]PWL开团时刻DAY10——一拳超人
2020/11/11 DOTA
[48:48]完美世界DOTA2联赛PWL S3 Magama vs GXR 第一场 12.19
2020/12/24 DOTA
python面向对象_详谈类的继承与方法的重载
2017/06/07 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
2019/07/25 Python
Python简单实现区域生长方式
2020/01/16 Python
python实现图像随机裁剪的示例代码
2020/12/10 Python
python 下载文件的几种方法汇总
2021/01/06 Python
html+css实现自定义图片上传按钮功能
2019/09/04 HTML / CSS
路由表示做什么用的?在linux环境中怎么来配置一条默认路由?
2013/06/07 面试题
Java如何调用外部Exe程序
2015/07/04 面试题
环境工程毕业生自荐信
2013/11/17 职场文书
大学生四年生活自我鉴定
2013/11/21 职场文书
公司廉洁自律承诺书
2014/03/27 职场文书
工作检讨书怎么写
2014/10/10 职场文书
师德师风自查材料
2014/10/14 职场文书
2015年防汛工作总结
2015/05/15 职场文书
入党积极分子党小组意见
2015/06/02 职场文书
Python编程中内置的NotImplemented类型的用法
2022/03/23 Python
vue3.0 数字翻牌组件的使用方法详解
2022/04/20 Vue.js