Какой код более оптимальный?
Всем привет!
Я только начал изучать 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 символов"); } |
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) ? ' больше' : ' меньше' )); |
Извращенцы.
На деле, в такой мелочи - не принципиально. А как часть чего-то большего - любой из предложенных вариантов неправилен, т.к. и за ввод и за вывод отвечать должны будут отдельные системы.) |
у автора я бы выбрал второй вариант тк в первом jslint выдаст многократное объявление 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)); |
Цитата:
|
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)); |
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. |
Как часть чего-то большего такой код приемлем?
function game() { var friend = prompt("Какой друг пришел?"); var myFriend = friend.toLowerCase(); if(myFriend == "саша" || myFriend == "паша"){ document.write("Идем играть в бильярд"); } else { document.write("Идем играть в тенис"); } } game(); |
Часовой пояс GMT +3, время: 00:13. |