Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.11.2013, 20:06
Аспирант
Отправить личное сообщение для Apollon Посмотреть профиль Найти все сообщения от Apollon
 
Регистрация: 01.11.2013
Сообщений: 42

Какой код более оптимальный?
Всем привет!
Я только начал изучать JS и пока практикуюсь, решая не сложные задачи.
Сегодня решал задачу, по условиям которой пользователю предлагается ввести слово. А результатом должен быть вывод на экран фразы, зависящей от количества символов в слове.
Решил ее двумя способами. Подскажите какой вариант более оптимален или правильный и почему.
Первый вариант:
function letterCount (myString) {
if (myString.length < 10){
var result = "Вы ввели меньше 10 символов";
}
else if (myString.length > 10){
var result = "Вы ввели больше 10 символов";
}
else {
var result = "Вы ввели 10 символов";
}
return result;
}
var userWord = prompt('Введите любое слово');
document.write(letterCount(userWord));


Второй вариант:
function letterCount () {
var userWord = prompt('Введите любое слово');
return userWord.length;

}
var res = letterCount();
if (res > 10){
document.write("Вы ввели больше 10 символов");
}
else if(res < 10){
document.write("Вы ввели меньше 10 символов");
}
else {
document.write("Вы 10 символов");
}
Ответить с цитированием
  #2 (permalink)  
Старый 01.11.2013, 22:09
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

var userWord = prompt('Введите любое слово');
var wordLength = userWord.length;
var message = "Вы ввели_ 10 символов";
var cmp = wordLength > 10 ? ' больше' : wordLength < 10 ? ' меньше' : '';
alert(message.replace('_', cmp));
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 01.11.2013, 22:30
Аватар для jsru_
Кандидат Javascript-наук
Отправить личное сообщение для jsru_ Посмотреть профиль Найти все сообщения от jsru_
 
Регистрация: 09.04.2013
Сообщений: 149

Сообщение от danik.js Посмотреть сообщение
var userWord = prompt('Введите любое слово');
var wordLength = userWord.length;
var message = "Вы ввели_ 10 символов";
var cmp = wordLength > 10 ? ' больше' : wordLength < 10 ? ' меньше' : '';
alert(message.replace('_', cmp));
alert("Вы ввели_ 10 символов".replace('_', (prompt('Введите любое слово').length > 10) ? ' больше' : ' меньше' ));
Ответить с цитированием
  #4 (permalink)  
Старый 02.11.2013, 00:39
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

Извращенцы.
На деле, в такой мелочи - не принципиально. А как часть чего-то большего - любой из предложенных вариантов неправилен, т.к. и за ввод и за вывод отвечать должны будут отдельные системы.)
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 02.11.2013, 00:56
Аватар для jsru_
Кандидат Javascript-наук
Отправить личное сообщение для jsru_ Посмотреть профиль Найти все сообщения от jsru_
 
Регистрация: 09.04.2013
Сообщений: 149

у автора я бы выбрал второй вариант тк в первом jslint выдаст многократное объявление var как "некомильфо"
Ответить с цитированием
  #6 (permalink)  
Старый 02.11.2013, 01:03
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Сообщение от jsru_
многократное объявление var
оно там вообще не нужно:
function letterCount (myString) {
	if (myString.length < 10) return 'Вы ввели меньше 10 символов';
	else if (myString.length > 10) return 'Вы ввели больше 10 символов';
	else return 'Вы ввели 10 символов';
}
var userWord = prompt('Введите любое слово');
alert(letterCount(userWord));
Ответить с цитированием
  #7 (permalink)  
Старый 02.11.2013, 03:36
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от jsru_
у автора я бы выбрал второй вариант тк в первом jslint выдаст многократное объявление var как "некомильфо"
Ну бред же. Это зависит от выбранного стиля кода. var на каждую переменную - довольно частый выбор.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #8 (permalink)  
Старый 02.11.2013, 06:27
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

function letterCount (myString) {
 var result = [],
 decTst = parseInt(myString.length/10)?1:0,
 ostTst = (myString.length-10>0)?1:0;

 result[0] = "Вы ввели меньше 10 символов";
 result[2] = "Вы ввели больше 10 символов";
 result[1] = "Вы ввели 10 символов";
 return result[decTst+ostTst];
 }
 var userWord = prompt('Введите любое слово');
 alert(letterCount(userWord));
Ответить с цитированием
  #9 (permalink)  
Старый 02.11.2013, 11:41
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Deff, тогда уж так:

function letterCount (string) {
    var diff = string.length - 10,
        sign = diff / Math.abs(diff),
        message = {
            "-1": "Вы ввели меньше 10 символов",
             "0": "Вы ввели 10 символов",
             "1": "Вы ввели больше 10 символов"
        }[sign];
        return message;
}
var userWord = prompt('Введите любое слово');
alert(letterCount(userWord));


Вместо объекта с ключами -1, 0 и 1 можно также использовать массив, но тогда выбирать значение по ключу sign + 1.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #10 (permalink)  
Старый 03.11.2013, 14:27
Аспирант
Отправить личное сообщение для Apollon Посмотреть профиль Найти все сообщения от Apollon
 
Регистрация: 01.11.2013
Сообщений: 42

Как часть чего-то большего такой код приемлем?
function game() {
var friend = prompt("Какой друг пришел?");
var myFriend = friend.toLowerCase();

	if(myFriend == "саша" || myFriend == "паша"){
		document.write("Идем играть в бильярд");
	}
	else {
		document.write("Идем играть в тенис");
	}
}
game();
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается вставить код js в HTML garmoni Элементы интерфейса 3 05.09.2013 05:56
Помогите модифицировать код JS refer5 Общие вопросы Javascript 2 22.01.2013 21:42
Предложение представить код с setInterval для n - но более двух DOM-єлементов JavaScriptProgrammer Events/DOM/Window 1 09.11.2012 08:09
Код в качестве портфолио stereomaniac1 Оффтопик 12 24.10.2012 12:13
код нe работает в фаирфохе dadli Javascript под браузер 2 28.01.2012 21:18