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 相关文章推荐
JQuery 前台切换网站的样式实现
Jun 22 Javascript
javascript 触发HTML元素绑定的函数
Sep 11 Javascript
js解决select下拉选不中问题
Oct 14 Javascript
浅析webapp框架AngularUI的demo
Dec 21 Javascript
js生成随机数的方法实例
Oct 16 Javascript
AngularJS实现在ng-Options加上index的解决方法
Nov 03 Javascript
BootStrapValidator初使用教程详解
Feb 10 Javascript
微信小程序实现tab页面切换功能
Jul 13 Javascript
对 Vue-Router 进行单元测试的方法
Nov 05 Javascript
JavaScript中的ES6 Proxy的具体使用
Jun 16 Javascript
vue模块移动组件的实现示例
May 20 Javascript
微信小程序实现自定义底部导航
Nov 18 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/11/26 PHP
PHP register_shutdown_function()函数的使用示例
2015/06/23 PHP
PHP的Yii框架入门使用教程
2016/02/15 PHP
Laravel 读取 config 下的数据方法
2019/10/13 PHP
使用IE6看老赵的博客 jQuery初探
2010/01/17 Javascript
jquery加载图片时以淡入方式显示的方法
2015/01/14 Javascript
js+html5实现canvas绘制圆形图案的方法
2015/06/05 Javascript
jQuery常用且重要方法汇总
2015/07/13 Javascript
JavaScript中循环遍历Array与Map的方法小结
2016/03/12 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
2016/06/08 Javascript
jQuery中绑定事件bind() on() live() one()的异同
2017/02/23 Javascript
axios基本入门用法教程
2017/03/25 Javascript
Javascript中 toFixed四舍六入方法
2017/08/21 Javascript
vue服务端渲染页面缓存和组件缓存的实例详解
2018/09/18 Javascript
小程序点击图片实现png转jpg
2019/10/22 Javascript
python多线程扫描端口示例
2014/01/16 Python
python中sys.argv参数用法实例分析
2015/05/20 Python
Python PyQt5实现的简易计算器功能示例
2017/08/23 Python
Python实现的插入排序算法原理与用法实例分析
2017/11/22 Python
创建pycharm的自定义python模板方法
2018/05/23 Python
修改 CentOS 6.x 上默认Python的方法
2019/09/06 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
什么是Python包的循环导入
2020/09/08 Python
PyQt5多线程防卡死和多窗口用法的实现
2020/09/15 Python
中国排名第一的外贸销售网站:LightInTheBox.com(兰亭集势)
2016/10/28 全球购物
Lacoste(法国鳄鱼)加拿大官网:以标志性的POLO衫而闻名
2019/05/15 全球购物
荷兰家电销售网站:Welhof
2020/12/08 全球购物
英国珠宝和手表专家:Pleasance & Harper
2020/10/21 全球购物
单位门卫岗位职责
2013/12/20 职场文书
实验教师岗位职责
2014/02/13 职场文书
成语的广告词
2014/03/19 职场文书
2014市府办领导班子“四风问题”对照检查材料思想汇报
2014/09/24 职场文书
2015年度员工自我评价范文
2015/03/11 职场文书
关于倡议书的范文
2015/04/29 职场文书
2015年幼儿园师德师风建设工作总结
2015/10/23 职场文书
Mysql存储过程、触发器、事件调度器使用入门指南
2022/01/22 MySQL