使这三种功能更有效的最佳方法是什么?他们有共同的逻辑。
function setBoxWidth(type) {
var boxWidth;
if (type) {
boxWidth = 308;
} else {
boxWidth = 400;
}
return boxWidth;
}
function setAspectWidth(type) {
var bw;
if (type) {
bw = 192;
} else {
bw = 100;
}
return bw;
}
function setAspectHeight(type) {
var bh;
if (type) {
bh = 47;
} else {
bh = 100;
}
return bh;
}
我这样访问它们:
function useJcrop(img, type, boxWidth) {
var aspect,
bh = setAspectHeight(type),
bw = setAspectWidth(type),
bWidth =setBoxWidth(type);
}
答案 0 :(得分:1)
使这三个功能更有效的最佳方法是避免编写它们。
function useJcrop(img, type, boxWidth) {
var aspect,
bh = type ? 308 : 400,
bw = type ? 192 : 100,
bWidth = type ? 47 : 100;
}
答案 1 :(得分:0)
这样的东西?
function useJcrop(img, type, boxWidth) {
var aspect,
bh = type ? 308 : 400,
bw = type ? 192 : 100,
bWidth = type ? 47 : 100
}
代码少得多。
我建议你尽可能将这些数字放入描述性变量中。或者以编程方式计算它们。
答案 2 :(得分:0)
function setBoxWidth(type) {
return type ? 308 : 400;
}
function setAspectWidth(type) {
return (type) ? 192 : 100;
}
function setAspectHeight(type) {
return (type) ? 47 : 100;
}
很难比功能更简单。您应该考虑将所有这些信息封装在Object中,但是,因为type基本上是3中的共享状态。
function CroppedImage(type)
{
this.type=type;
this.getBoxWidth= function() {
return type ? 308 : 400;
}
/...
}
答案 3 :(得分:0)
bh = type ? 47 : 100;
bw = type ? 192 : 100;
bWidth = type ? 308 : 400;
答案 4 :(得分:0)
首先,您的功能命名令人困惑。它们不设置任何内容(局部变量除外),而是返回一个值。因此我会称它们为getFoo(),getBar()等等。此外,您不需要局部变量。
function getAspectWidth(type) {
if (type) {
return 192;
} else {
return 100;
}
}
除此之外,我不会做任何其他事情。它比您的版本更易读和易懂。
或者您可以使用ternary operator
function getAspectWidth(type) {
return type ? 192 : 100;
}
更简洁。