覆盖变量或检查是否存在
Overwrite variable or check for existance
我正在用Javascript编写一个简单的脚本,计算一些东西,如最小值,最大值等,我想知道以下哪个会更快,而且大多数情况下,为什么:
var x, y, z;
function test(){
if (x === undefined)
x = Math.min(a, b);
if (y === undefined)
y = a / b;
if (z === undefined)
z = a - b;
return [x, y, z];
}
test(); test(); test();
或
function test() {
return [Math.min(a, b), a / b, a - b]
}
另外,我是否应该以第一种方式创建变量(仅在请求时定义它们),还是应该尽快定义变量,例如在函数开始时?我正在创建一个RGB到HSV脚本,使用恒定的RGB值。HSV不一定总是被请求(用户决定)。
始终在顶部定义javascript变量,并在以后使用它们,如:
'use strict';
var a, b, c;
a = 1;
if (typeof b === 'undefined') {
b = a || c;
}
// b is now 1
值得一提的是,如果你没有定义一个变量,它在第一次使用时就变成了一个全局变量(这是非常糟糕的)。在条件(例如if
)中定义变量也是一个非常糟糕的做法。
如果您不想更改已经存在的x,y,z值,那么检查它们是否存在,然后重写将是更好的选择。
if (x === undefined)
x = Math.min(a, b);
if (y === undefined)
y = a / b;
if (z === undefined)
z = a - b;
由于您正在使用RGB,这是最佳实践。在开始时定义变量总是被认为是有帮助的,它几乎不会对性能产生任何影响。
如果变量没有定义,则使用typeof。条件应该像
if(typeof x === 'undefined'){
//do something
}
是否要覆盖现有值完全取决于上下文。不管变量是否存在,如果你想要执行操作,那么下面的方法是最好的。
x = Math.min(a, b);
y = a / b;
z = a - b;
这种方式更快,因为在第一种方式中你只是检查变量是否未定义,如果未定义则执行任务。最好直接执行任务。
相关文章:
- 用于检查数组中是否存在元素的javascript自定义方法
- 是否存在React Native“;WEB代码安全防护”;
- 验证会话中是否存在对象's数组
- 如何查找值是否存在于二叉树中
- 检查是否存在使用chrome扩展的javascript库
- 是否存在Javascript Liferay Service库的文档?如何处理错误情况
- 测试mongo脚本中是否存在参数
- 检查搜索结果是否存在多次如果是,则在Javascript中只显示一个结果
- 检查数组中是否存在字符串值,并返回找到的数组值js
- 如何通过json对象选项卡中的Id来检查对象是否存在
- 检查是否存在任意控制器/操作
- Javascript滑块不滑动,如何判断是否存在JS冲突
- 根据手机上是否存在文件,在jQuery mobile中动态填充列表视图
- javascript测试是否存在两个标志中的任何一个
- 如何使用javascript检查移动sd卡中是否存在文件
- 当提供函数名称时,检查函数是否存在于同一作用域中
- 需要帮助使用JQuery.inArray()检查值是否存在
- 确定元素是否存在
- 使用javascript检查服务器上是否存在html文件
- 是否存在类似ExtJS 4的框架;正常的“;网站