Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   можно ли оптимизировать do{...}while(); скрипт под катом (https://javascript.ru/forum/misc/52708-mozhno-li-optimizirovat-do%7B-%7Dwhile-%3B-skript-pod-katom.html)

Cache 02.01.2015 19:58

можно ли оптимизировать 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

danik.js 02.01.2015 20:04

Этот код делает абсолютно тоже самое:
function rand(min,max){return Math.floor(Math.random()*(max-min+1))+min;};
do{
    str=rand(1,10);
}while(str==1);
alert(str)

Cache 02.01.2015 20:06

danik.js, чуть изменил описание, не совсем корректно задал изначально вопрос
при проверке if(str==1){func_2()} - выполняется иная функция, нежели при str=func_1()

danik.js 02.01.2015 20:19

Думаю, что только так:
do{
    str=rand(1,10);
    if(str!==1){break};
    alert(str);
}while(true);

Cache 02.01.2015 20:21

danik.js, да, была такая мысль, а других вариантов, как я понимаю - нет...

Cache 02.01.2015 20:27

если только так еще:
while(true){
    str=rand(1,10);
    if(str!==1){break};
    alert(str);
};

caetus 03.01.2015 00:43

или так

while(true){
    str=rand(1,10);
    str === 1 ? alert(str) : break;

};


или в другой функции прописать проверку значения str. но только это полный бред !

danik.js 03.01.2015 07:46

caetus, нельзя так. Попробуй запусти.

Erolast 03.01.2015 08:36

(function(){
    while(true) {
        var str = rand(1, 10);
        if (str !== 1) break;
        alert(str);
    };
})();

Во-первых, объявление без var запрещено, во-вторых, работа в глобале идет дольше.

caetus 03.01.2015 10:19

var я случайно упустил )) danik да не работает , а почему ?? как понимаю все через тернарный оператор


Часовой пояс GMT +3, время: 05:34.