JavaScript常量-作为参数传递或直接使用
JavaScript Constants - pass as argument or use directly?
我想知道在JavaScript中使用声明常量的最佳实践是什么。将常量作为参数传递给函数更好,还是使用不传递的常量更好?
我的直觉是不要将常量作为自变量传递,因为这会产生变量的不必要的局部副本。然而,如果常量被传递,它可能会更清楚地从哪里来。
const myConstant = 1;
myFunc();
myOtherFunc(myConstant);
/* use constant without passing */
function myFunc() {
console.log(`${myConstant} is a constant`);
}
/* pass constant as argument */
function myOtherFunc(localCopy) {
console.log(`${localCopy} is a constant`);
}
有两个方向的权衡,尽管其中大多数都在单元测试和可重用性领域。
硬编码越多,测试的灵活性就越低。
让我举一个人为的例子:
const FIRST_NAME_MAX_LEN = 20;
在我们的验证代码中,我们查看该常量,并将其与输入字段的长度进行比较。。。
function validateFirstName() {
return document.getElementsByName("first-name")[0].length <= FIRST_NAME_MAX_LEN;
}
好的,这是可行的,但如果不调用整个DOM,我们就无法测试validateFirstName()是否有效。它更难测试。
另一方面,如果我们创建一个函数,比如:
function validateStringLength(s, maxLength) {
return s.length <= maxLength;
}
然后,我们创建了一个函数,它接受传递的参数,在其他地方可以重用,并且在任何测试框架中都非常容易地进行测试。DOM不是必需的。
通过依赖常量,您已经根据该值及其所在位置创建了dependency
。研究JavaScript Dependency Injection
以获得更多关于该主题的信息。
相关文章:
- 函数未将值作为参数传递
- 如何将参数传递到angularJs中的工厂
- 如何在HTML元素上创建函数,而不是将元素作为参数传递
- JavaScript常量-作为参数传递或直接使用
- 如何将javascript对象作为参数传递到c#web服务中
- 将参数传递给函数
- 如何将Gruntfile.js中的参数传递到webdriverio规范
- javascript,将参数传递给函数内部的闭包中的回调
- Javascript-将包含变量的html字符串作为参数传递
- 将字符串作为参数传递给函数onclick event jquery
- 将修改后的数组作为参数传递给函数
- 在嵌套递归指令中将参数传递给父控制器方法
- each()-将额外的参数传递给回调参数
- 代码气味-将布尔控制参数传递给函数
- 如何将自定义参数传递到FullCalendar事件提要
- 将参数传递给函数,同时保留事件处理程序
- 将图标作为参数传递不会;t工作-谷歌地图
- 如何使用按钮将参数传递给函数
- 如何将多个参数传递给输入's onChange处理程序
- 如何传递'常量'参数