можно ли оптимизировать do{...}while(); скрипт под катом
Можно ли оптимизировать в данном скрипте связку if с while, т.к. проверка в них идет одной и той же переменной на равенство одному и тому же значению
function rand(min,max){return Math.floor(Math.random()*(max-min+1))+min;}; // пример с rand, просто для примера
do{
str=rand(1,10); // в реале, запуск первой функции
if(str==1){alert(str);}; // в реале, запуск второй функции, влияющей на первую
}while(str==1);
alert(str)
данный пример, просто из головы, просто, чтобы запускался тут, кроме связки if c while |
Этот код делает абсолютно тоже самое:
function rand(min,max){return Math.floor(Math.random()*(max-min+1))+min;};
do{
str=rand(1,10);
}while(str==1);
alert(str)
|
danik.js, чуть изменил описание, не совсем корректно задал изначально вопрос
при проверке if(str==1){func_2()} - выполняется иная функция, нежели при str=func_1() |
Думаю, что только так:
do{
str=rand(1,10);
if(str!==1){break};
alert(str);
}while(true);
|
danik.js, да, была такая мысль, а других вариантов, как я понимаю - нет...
|
если только так еще:
while(true){
str=rand(1,10);
if(str!==1){break};
alert(str);
};
|
или так
while(true){
str=rand(1,10);
str === 1 ? alert(str) : break;
};
или в другой функции прописать проверку значения str. но только это полный бред ! |
caetus, нельзя так. Попробуй запусти.
|
(function(){
while(true) {
var str = rand(1, 10);
if (str !== 1) break;
alert(str);
};
})();
Во-первых, объявление без var запрещено, во-вторых, работа в глобале идет дольше. |
var я случайно упустил )) danik да не работает , а почему ?? как понимаю все через тернарный оператор
|
while (true) {
let str = rand(1, 10);
str === 1 ? break : alert(str);
};
|
function rand(min,max){return Math.floor(Math.random()*(max-min+1))+min;};
[rand(1, 10)].map(function (value, index, mas) {
mas = [rand(1, 10)];
if (value != 1) mas = [];
alert(value);
});
|
| Часовой пояс GMT +3, время: 21:01. |