[译]Javascript风格要素(二)(3)
作者:秦歌 来源:随网之舞 时间:2008-02-29 12:51:00
使用内部函数避免全局变量
我们可以通过增加传递给mt
的参数数量来除掉所有的全局变量。但代替方案,我们将使mt
变成kd
的内部函数。作为一个内部函数,mt
能访问kd
的所有变量。
unction kd(e) {
var ev = e || event,
el = ev.target || ev.srcElement,
cnt,
code = ev.keyCode,
gk,
id = el.id,
ctn = lt.id.substring(1);
function mt() {
var nextTab;
if (!ev.ctrlKey && !ev.altKey) {
nextTab = parseInt(ctn) + ev.shiftKey ? -1 : 1;
if (!nextTab) {
d.getElementById('mk').focus();
} else if (nextTab < 8 ) {
t(d.getElementById('v' + nextTab));
}
}
}
if (code == 13) {
return;
} else if ((code == 191 || code == 222) && id != 'fp') {
_ffs = 1;
gk = 0;
} else if ((code < 31 || code > 41) &&
(code < 16 || code > 18) && code != 9 && code != 8 ) {
gk = 1;
} else {
gk = 0;
}
if (!_ffs && (id == 'fp' || id == 'st')) {
if (code == 9) {
if (box.value == '' ||
(box.value != '' && (at == 1 || ev.shiftKey))) {
mt();
} else if (id == 'st' && box.value != '' && at == 0) {
at = 1;
mt();
}
} else if (id == 'fp' && gk == 0 && (box.value == '' && st == 0) &&
!ev.shiftKey && !ev.ctrlKey && !ev.altKey) {
d.getElementById('mk').focus();
d.getElementById('mk').blur();
} else if (gk == 1) {
at = 0;
}
} else if ((id == 'mk2' && box.value != '' && ev.shiftKey && code == 9) ||
(id == 'm6' && !ev.shiftKey && code == 9)){
d.getElementById('mk').focus();
} else if (!_ffs && gk == 1 && el.type != 'text' && !ev.ctrlKey &&
!ev.altKey) {
box.value = '';
box.focus();
}
}
在函数kd
中,从两个地方调用函数mt
。通过使它成为一个内部函数,我们能有效的减少kd
所用到的全局变量的数目,这将降低了干扰其他组件的可能性。kd
依旧是一个烂摊子,但它现在不是一无是处的烂摊子。
原文:Douglas Crockford的The Elements of JavaScript Style Part Two: Idioms
标签:风格,运算符,javascript
0
投稿
猜你喜欢
pytorch模型部署 pth转onnx的方法
2022-07-05 03:49:04
教你自动恢复MySQL数据库的日志文件(binlog)
2024-01-26 02:29:07
如何了解SQL的执行频率
2009-08-26 15:17:00
snoopy PHP版的网络客户端提供本地下载
2023-06-28 00:09:55
如何使用postman(新手入门)
2023-06-12 14:00:31
使用python制作一个解压缩软件
2023-04-27 19:08:37
vue动态添加store、路由和国际化配置方式
2024-05-05 09:10:09
解决IE下提示“无法打开Internet站点 已终止操作”的错误
2009-03-04 12:04:00
基于Pygame实现简单的贪吃蛇游戏
2022-05-14 17:43:10
PyCharm Terminal终端命令行Shell设置方式
2021-06-22 19:30:02
利用Python演示数型数据结构的教程
2022-04-29 07:05:40
pytorch使用voc分割数据集训练FCN流程讲解
2023-08-29 20:30:37
剑走偏锋:体验ebay的AIR
2008-11-13 11:51:00
JavaScript实现简单贪吃蛇效果
2023-08-13 05:48:08
Vue 全部生命周期组件梳理整理
2023-07-02 16:32:44
PDO::beginTransaction讲解
2023-06-06 00:57:46
Python中多线程的创建及基本调用方法
2021-12-14 00:26:26
Python使用海龟绘图实现贪吃蛇游戏
2022-01-03 15:21:28
Python中设置变量作为默认值时容易遇到的错误
2023-09-14 09:32:00
Python实现冒泡排序算法的示例解析
2021-03-17 10:34:10