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 相关文章推荐
js中cookie的使用详细分析
May 28 Javascript
jquery Tab效果和动态加载的简单实例
Dec 11 Javascript
jquery实现动态画圆
Dec 04 Javascript
js在指定位置增加节点函数insertBefore()用法实例
Jan 12 Javascript
javascript 用函数实现继承详解
May 28 Javascript
jQuery实现隔行变色的方法分析(对比原生JS)
Nov 18 Javascript
Bootstrap Table使用心得总结
Nov 29 Javascript
详解js的六大数据类型
Dec 27 Javascript
vue-resource + json-server模拟数据的方法
Nov 02 Javascript
JavaScript实现数值自动增加动画
Dec 28 Javascript
js神秘的电报密码 哈弗曼编码实现
Sep 10 Javascript
解决Vue + Echarts 使用markLine标线(precision精度问题)
Jul 20 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制作中间带自己定义图片二维码的方法
2014/01/27 PHP
异步加载技术实现当滚动条到最底部的瀑布流效果
2014/09/16 PHP
thinkphp浏览历史功能实现方法
2014/10/29 PHP
Laravel 5框架学习之用户认证
2015/04/09 PHP
tp5框架无刷新分页实现方法分析
2019/09/26 PHP
在视频前插入广告
2006/11/20 Javascript
Javascript 错误处理的几种方法
2009/06/13 Javascript
jQuery 常见开发使用技巧总结
2009/12/26 Javascript
Chosen 基于jquery的选择框插件使用方法
2012/05/30 Javascript
script标签属性type与language使用选择
2012/12/02 Javascript
浅析JavaScript中的隐式类型转换
2013/12/05 Javascript
JS的参数传递示例介绍
2014/02/08 Javascript
jQuery简单实现遍历数组的方法
2015/04/14 Javascript
jquery 中ajax执行的优先级
2015/06/22 Javascript
javascript生成img标签的3种实现方法(对象、方法、html)
2015/12/25 Javascript
jQuery技巧之让任何组件都支持类似DOM的事件管理
2016/04/05 Javascript
JavaScript仿微博输入框效果(案例分析)
2016/12/06 Javascript
canvas雪花效果核心代码分享
2017/02/19 Javascript
jQuery+CSS3实现点赞功能
2017/03/13 Javascript
使用JS和canvas实现gif动图的停止和播放代码
2017/09/01 Javascript
vue.js打包之后可能会遇到的坑!
2018/06/03 Javascript
Angularjs中的$apply及优化使用详解
2018/07/02 Javascript
python构造icmp echo请求和实现网络探测器功能代码分享
2014/01/10 Python
解决Linux系统中python matplotlib画图的中文显示问题
2017/06/15 Python
python leetcode 字符串相乘实例详解
2018/09/03 Python
python pandas dataframe 去重函数的具体使用
2020/07/20 Python
Python内置函数及功能简介汇总
2020/10/13 Python
Giuseppe Zanotti美国官方网站:将鞋履视为高级时装般精心制作
2018/02/06 全球购物
巴黎一票通:The Paris Pass
2018/02/10 全球购物
GWT (Google Web Toolkit)有哪些主要的原件组成?
2015/06/08 面试题
中学生运动会入场词
2014/02/12 职场文书
幼儿园园务工作总结2015
2015/05/18 职场文书
国庆阅兵观后感
2015/06/15 职场文书
绿里奇迹观后感
2015/06/15 职场文书
班主任工作经验交流会总结
2015/11/02 职场文书
Js类的构建与继承案例详解
2021/09/15 Javascript