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 性能优化指南 (1)
May 21 Javascript
jquery判断checkbox(复选框)是否被选中的代码
Oct 20 Javascript
关于javascript中this关键字(翻译+自我理解)
Oct 20 Javascript
ie下$.getJSON出现问题的解决方法
Feb 12 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
Sep 03 Javascript
JavaScript计算某一天是星期几的方法
Aug 05 Javascript
动态加载JavaScript文件的两种方法
Apr 22 Javascript
浅谈JS正则表达式的RegExp对象和括号的使用
Jul 28 Javascript
Iscrool下拉刷新功能实现方法(推荐)
Jun 26 Javascript
vue-router 源码实现前端路由的两种方式
Jul 02 Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
Nov 27 Javascript
axios如何取消重复无用的请求详解
Dec 15 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代码网站如何防范SQL注入漏洞攻击建议分享
2012/03/01 PHP
php中存储用户ID和密码到mysql数据库的方法
2013/02/06 PHP
PHP分页类集锦
2014/11/18 PHP
PHP数组相关函数汇总
2015/03/24 PHP
php fseek函数读取大文件两种方法
2016/10/12 PHP
详解cookie验证的php应用的一种SSO解决办法
2017/10/20 PHP
详解PHP中的8个魔术常量
2020/07/06 PHP
PHP的垃圾回收机制代码实例讲解
2021/02/27 PHP
JavaScript 模拟用户单击事件
2009/12/31 Javascript
js 数组克隆方法 小结
2010/03/20 Javascript
推荐10个2014年最佳的jQuery视频插件
2014/11/12 Javascript
jquery实现兼容IE8的异步上传文件
2015/06/15 Javascript
js判断移动端是否安装某款app的多种方法
2015/12/18 Javascript
漫谈JS引擎的运行机制 你应该知道什么
2016/06/15 Javascript
addEventListener()与removeEventListener()解析
2017/04/20 Javascript
ES6学习教程之模板字符串详解
2017/10/09 Javascript
vue中mint-ui的使用方法
2018/04/04 Javascript
vue ssr服务端渲染(小白解惑)
2019/11/10 Javascript
java遇到微信小程序 &quot;支付验证签名失败&quot; 问题解决
2019/12/22 Javascript
python实现通过代理服务器访问远程url的方法
2015/04/29 Python
简单谈谈Python流程控制语句
2016/12/04 Python
Python random模块用法解析及简单示例
2017/12/18 Python
Python使用re模块正则提取字符串中括号内的内容示例
2018/06/01 Python
Python 依赖库太多了该如何管理
2019/11/08 Python
Python3 shelve对象持久存储原理详解
2020/03/23 Python
世界上最大的铁人三项商店:Tri UK
2020/11/04 全球购物
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
西班牙购买隐形眼镜、眼镜和太阳镜网站:Lentiamo.es
2020/06/11 全球购物
网络安全类面试题
2015/08/01 面试题
十八大闭幕感言
2014/01/22 职场文书
光盘行动倡议书
2014/02/02 职场文书
工会主席事迹材料
2014/06/03 职场文书
2015年党风廉政承诺书
2015/01/22 职场文书
nginx中封禁ip和允许内网ip访问的实现示例
2022/03/17 Servers
Python Pygame实战在打砖块游戏的实现
2022/03/17 Python
idea下配置tomcat避坑详解
2022/04/12 Servers