2

我有个问题。如果满足我的条件,我只会声明一个变量。

if(//some condition1)
var some1=1;
else if(//some condition1)
var some2=2;

现在

var some3=some1+some2;

如果满足两个条件,就可以有 sum insome3;

如果只满足一个条件,我想要some1要么some2some3

我怎样才能做到这一点?

注意:感谢您的回答但我只想在满足该条件时声明变量。还有其他解决方案吗?

4

11 回答 11

3
var some3=0;

if(//some condition1){
  var some1=1;
  some3 += some1;
}else if(some condition2){
  var some2=2;
  some3 += some2;
}

编辑:更好的选择:

var some3=0;           
if(some condition1){
   some3 += 1;
}else if(some condition2){
   some3 += 2;
}

而且这两个条件不会同时满足,所以,如果你愿意,你也可以像下面这样

var some3=0;           
if(some condition1){
   some3 += 1;
}
if(some condition2){
   some3 += 2;
}
于 2013-08-01T08:57:40.623 回答
2

首先,您不能仅在满足某个条件时才声明变量。JavaScript 具有函数作用域,这意味着,无论您在代码中的哪个位置编写var some1,它总是会被提升到函数作用域的顶部:

function A() {
   if (...) {
       var a = 1;
   }
}

将被解释为:

function A() {
   var a;
   if (...) {
       a = 1;
   }
}

话虽如此。我认为要解决您的问题,您只需用 0 初始化变量:

var some1 = 0,
    some2 = 0,
    some3;

if(//some condition1)
    some1 = 1;
else if(//some condition1)
    some2 = 2;

some3 = some1 + some2;

编辑

实际上,有一种方法可以仅在满足条件时声明变量:

if (...) {
    eval("var x = 1;");
}

但我真的不认为需要这样的“黑客”,也不会建议这种方法。

于 2013-08-01T09:01:15.513 回答
1

首先将两个变量初始化为 0。

var some1 = 0, some2 = 0;
if (condition1) {
    some1 = 1;
}
if (condition2) {
    some2 = 2;
}
var some3 = some1 + some2;

由于您希望同时满足两个条件并设置两个变量,因此不应使用else if. 只是两个单独的if陈述。

于 2013-08-01T08:58:27.853 回答
1
if(//some condition1) {
    var some1 = 1;
} else if(//some condition1) {
    var some2 = 2;
}

var some3 = 0;

if(some1 !== undefined) {
    some3 += some1;
}
if(some2 !== undefined) {
    some3 += some2;
}
于 2013-08-01T09:00:28.980 回答
1

一个对象怎么样:

var obj = {};
if(//conditon){
   obj.some1 = 1;
}
else if(//condition){
   obj.some2 = 1;
}

var sum3 = 0;
for(var key in obj){
    sum3 += obj[key];
}
于 2013-08-01T09:00:46.520 回答
0
var some3 = 0; //Assingning global var.
if(//some condition1)
  var some1=1;
else if(//some condition1)
  var some2=2;

在条件

if(some1 != null && some2 != null )
  some3=some1+some2;
else if(some1 != null && some2 == null)
  some3=some1;
else if(some1 == null && some2 != null)
  some3=some2;
else if(some1 == null && some2 == null)
  some3=some3;

然后

alert(some3);
于 2013-08-01T09:04:04.637 回答
0

怎么样:

var some3 =
(2 > 4      ? 10:0) +
(5 < 8      ? 20:0) +
(10 == 11   ? 30:0) +
('a' < 'b'  ? 40:0) ;

我承认这看起来不漂亮。

于 2013-08-01T09:15:05.150 回答
0

为什么不先声明变量,然后在满足条件时设置它们的值

var some1 = 0;
var some2 = 0;

if (//some condition)
{
  some1 = 1;
}
if (// some condition)
{
  some2 = 2;
}

var some3 = some1 + some2;
于 2013-08-01T08:58:44.543 回答
0

如果您需要使用该模型,您可以只使用第四个变量。

var some0 = 0
if(/*some condition1*/) {
var some1=1;
some0 = some1 + some3
}
else if(/*some condition1*/) {
var some2=2;
some0 = some2 + some3
}
some3=some0
于 2013-08-01T09:02:50.290 回答
0

在开始时声明所有变量。将它们初始化为0。如果满足条件,则更改变量值。然后,当你求和时,任何加 0 的值都保持不变。或者如果满足条件,则该值不会为 0。

于 2013-08-01T08:58:57.143 回答
0

你使用

if(//一些条件1) var some1=1;

else if(//一些条件1) var some2=2;

然后尝试像我的jsfiddle中的 catch 语句

try{

 var some3=some1+some2;

}
catch (e){
    try{
      var some3=some1;
      document.getElementById("test").innerHTML= some3;

    }catch (e){
        try{
           var some3=some2 ;
           document.getElementById("test").innerHTML= some3;

        }
        catch (e){
        document.getElementById("test").innerHTML="Something went wrong!!!!or no condition satisfied";
        }
    }
}
于 2013-08-01T09:31:01.523 回答