2015-02-13 3 views
0

Есть ли сжатый способ определения переменной в условии оператора if в JavaScript? Например:Есть ли допустимый способ определения переменной в условии условия условной (if) структуры?

var arr = [1,2,3]; 
console.log(len); // output is null, since it was never declared 
if ((var len = arr.length) > 0) { // len == 3 
    // logic using variable 'len ' here 
} 

Или это единственный способ обойти это, чтобы объявить и присвоить значение len до условного оператора?

+0

Почему не используется только 'arr.lenght' в условном выражении, а затем объявить переменную' len' внутри нее? – steps

+0

Это сделало бы линию длиннее, я просто пытаюсь понять, есть ли у нее сжатый способ сделать это. – rageandqq

ответ

2

Если ваша проблема является количеством строк вы пишете, вы можете объявить Len в той же строке, где вы объявляете обры такие как:

var len, arr = [1,2,3]; 
console.log(len); 
if ((len = arr.length) > 0) { // len == 3 
    // logic using variable 'len ' here 

    console.log(len); 
} 

Я лично не устанавливать значения в условных. Условностям нет места для установки переменных. Это похоже на ошибку, это приводит к ошибкам, и люди, которые читают ваш код, скорее всего, пропустят, что переменная устанавливается в условном выражении.

Удачи вам!

+0

Вау, я даже не проверял, работал ли код, который я написал. Благодаря! – rageandqq

+0

@rageandqq ваш код не работает, переменная должна быть объявлена ​​вне условия. Однако он может быть назначен в состоянии. Я бы советовал против этого, потому что он часто выглядит как несчастный случай и что он должен быть '==' или '===' –

0

Основываясь на комментарий от @VictorJohnson в другой ответ, я бы объявить мои переменные, как показано ниже

var arr = [1,2,3], len=arr.length; 
console.log(len);    // len == 3 
if (len > 0) { 
    // logic using variable 'len ' here 

    console.log(len); 
} 

Это устраняет возможную путаницу в if блока и остается довольно конденсируется