
nerv
Expert-
Posts
674 -
Joined
-
Last visited
-
Days Won
29
Content Type
Profiles
Forums
Calendar
Store
Everything posted by nerv
-
примитив от слова простой, не составной (как массив или объект) Boolean Number String Null Undefined Symbol
-
аха. Мягко говоря javascript не очень подходит в ряде проектов ввиду своей динамической природы и предоставляемой степени свободы, которую следовало бы ограничить =)
-
мягко говоря вопрос поставлен некорректно тем не менее, скорее всего ответом на твой вопрос будет -- модули http://frontender.info/es6-modules/ https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Statements/import http://www.2ality.com/2014/09/es6-modules-final.html
-
Конечно, невозможно. Причем невозможно не в рамках веба, а в принципе невозможно на сегодняшний день. Тот, кто формулировал данную задачу просто фантазер и не имеет ни малейшего представления о том, как она будет решаться.
-
ESC - show/hide
-
Все печально. См тему http://htmlforum.ru/index.php?showtopic=55226
-
думаю, надо рассматривать каждый случай отдельно. Например, данный подпадает, как мне кажется, под "это твой калькулятор, ты вправе сам решать, как он будет работать" =) лично я воспринимаю данный калькулятор исключительно как игрушечный, т.к. там отсутствуют хотя бы "скобочные группы". А по скольку он игрушечный и так нормально) зависит от ситуации. А данном случае я склоняюсь к тому, что в "модуле отображения"
-
Лайк тебе за старания =) Твой код выдает тебя. Он просто кричит, что у тебя мало практики) План таков: 1. Сейчас дожимаешь свой "объектный" калькулятор 2. После чего я покажу, как достаточно просто его визуализировать без лишних плясок с бубном --- Далее все по п.1: 1.1 Чем очевидней твой код, тем его проще читать. Вместо (''+val).matchрекомендую String(val).matchНе надо самому себе создавать доп. трудности1.2 static isOperation(val) { return (''+val).match(/^[\+\-\*\/]$/) !== null; }вместо см. match мой пример выше с REGEXP.test()1.3 вместо (+val)лучше писать Number(val)1.4 вместо let fn = new Function('return '+str+';'),см. мой пример выше со string templates1.5 рекурсия на ровном месте непонятно зачем add(val) { if(Array.isArray(val)) { val.forEach((value) => this.add(value));сам себе сложности создаешьесли хочешь валидировать массив actions, лучше отдельную функцию создать я последовательность не валидировал. на мой взгляд это лишнее) 1.6 // Предотвращает ошибку в случае если последний элемент это знак, удаляя еговсе равно try catсh нужен. Понятно почему? чтобы сделать свойство приватным. Когда ты описываешь класс, подразумевается, что он инкапсулирован в модуль что еще за "функция в ней"? =)Далее по п.2 Набросал на скорую руку очень упрощенно и приближенно https://jsfiddle.net/gLgo2s2d/2/
-
любая реализация имеет право на жизнь, даже нерабочая =)== мелочи == в нескольких местах if(Object.prototype.toString.call( arr ) !== '[object Array]') {вместо Array.isArrayв чем смысл? this.actions = this.actions.concat(val);== главное ==могу ошибаться, но при данных let obj = new Calculator([2, '+', '*', 2.15]);твой калькулятор тихо умираетвалидация не отрабатывает, ошибка не перехватывается мне кажется тебе надо еще больше упростить провеку: не пытайся валидировать весь массив, валидурий входящие данные поэлементно думаю, проверку надо делать на этапе добавления данных, а не запуске (просчете) калькулятора --- примерно так (обработка ошибок по вкусу) 'use strict';const PRIVATE = Symbol();class Calculator { constructor(...items) { this[PRIVATE] = []; this.add(...items); } clear() { this[PRIVATE].length = 0; } add(...items) { let valideted = items.filter(item => Calculator.isValid(item)); this[PRIVATE].push(...valideted); } calculate() { let string = this[PRIVATE].join(''); let fn; try { fn = new Function(`return ${string} + 0;`); } catch (e) { console.log(1); throw e; } return Number(fn()); } static isValid(item) { return /^(?:[-+*/%]|\d+|\d+.\d+)$/.test(item); }}let obj = new Calculator(2, '/', 4);console.log(obj);console.log(obj.calculate());http://codepen.io/anon/pen/PZBowj?editors=1011
-
new Calculator({actions: '2 + 2 * 2'})не понятно, зачем указывать объект {actions: '2 + 2 * 2'}который содержит строку, которая должна быть разбита пробелами, чтобы потом разбирать эту строку по пробелам, вместо того, чтобы просто указать {new Calculator([2, '+', 2, '*', 2]) throw new Error("Должно быть число или операция, а не: "+val);на английском static getOperations() { return { '+': {priority: 1,func: (a, => a + b}, '-': {priority: 2,func: (a, => a - b}, '*': {priority: 3,func: (a, => a * b}, '/': {priority: 4,func: (a, => a / b} }; }каждый раз создаешь и возвращаешь объект. Зачем? static checkOperation(val) { return Calculator.getOperations()[val] !== undefined; }не так проверяется наличие/отсутствие в объекте ключадолжно проверяться либо hasOwnProperty либо key in object (в зависимости от ситуации) из-за того, что используешь parseFloat, твой калькулятор позволяет писать '2_ololo + 1' // 3мне кажется это не то поведение, которое ожидается от калькуляторапохоже на хард код if(isOperation && Calculator.checkOperation(actions[actions.length-1])) { // Если последнее и новое действие это операция то заменяем старое новым actions[actions.length-1] = val; } else if (!isOperation || (isOperation && actions.length > 0)) { if(!isOperation && Calculator.checkNumber(actions[actions.length-1])) { actions.push('+'); // (!) ТУТ } actions.push(val); } }Сделай еще проще:1. на входе проверяешь регулярками 2. чтобы получить результат, делаешь так var fn = new Function('return 2 + 2 * 2;');console.log(fn());
-
1. @li4e, см. коммент http://htmlforum.ru/index.php?showtopic=55226#entry369653 2. забудь про DOM. Напиши калькулятор который работает БЕЗ DOM 3. если ты сумеешь правильно написать таковой, то визуализировать его работу труда не составит я тебе предлагаю упростить твой калькулятор до такого let obj = new Calculator();obj.add('7');obj.add('+');obj.add('2');obj.add('fffff'); // должно бросаться исключениеlet result = obj.calculate(); // результат или ошибкаobj.clear();class Calculator { constructor() { // your code here } add(some) { // your code here } clear() { // your code here } calculate() { // your code here }}
-
Best practice is a feature detection instead of a browser detection.
-
С приходом интернета ситуация такая, что на вебинарах можно научится большему/лучшему нежели в "гараже у дяди Васи". Вы уверены, что хотите быть именно верстальщиком? Быть верстальщиком и вебразработчиком не совсем одно и тоже. Последнее понятие гораздо шире. На самом деле всем глубоко пофиг в каком объеме ваши курсы. Важно другое: ваш код, его качество, применение "лучших практик", умение обосновать свой выбор и т.п.
- 9 replies
-
- начинающий верстальщик ищет р
- от
-
(and 1 more)
Tagged with:
-
девушка просто не о том думает, когда книжки по яваскрипту читает исключение бросают изучай наследование сразу в es6 https://learn.javascript.ru/es-modern
-
15% от чего? От нуля? Есть разница между 15% от 1000 и 0.15*10^6? на деревню дедушке)
-
это не вопрос, это предъява =) У меня обращение к подобным лицам
-
Релиз языка программирования PHP 7.0
-
var vopros = "Угадай цвет,"; // <-- нет такого англ. слова "vopros" var color = "red"; var count = 0;
-
Лично мне никогда не была интересна верстка. Вместе с тем я понимаю, что хороший верстальщик дорогого стоит, т.к. часто работаю с ним на проектах. По большей части я пишу клиентский javascript. При этом, поднимал несколько проектов (full stack) самостоятельно в рамках студии, в кот. сейчас работаю. Т.е. я имею немного больше, чем общее представление, что и как у нас происходит на сервере (php+mysql+zendframework+doctrine+smarty). Последнее время рассматриваю инструменты/технологии клиентской разработки исключительно с точки зрения рационального подхода. Если какой-то инструмент сравнительно легок в освоении и позволит делать мою работу быстрее/качественнее, я скорее всего посмотрю внимательно, что это такое и подумаю над тем, использовать ли его. Вместе с тем, стараюсь не изменять уже зарекомндовавшим себя. Отдаю предпочтение базовым знаниям, таким как паттерны проектирования, алгоритмам (хотя сам себя алгоритмистом не считаю) просто потому, что они легко переносятся с ЯПа на ЯП. Стараюсь писать легкочитаемый самодокументирумемый код без ухищрений. Скучно на фронтенде. Хорошо, что такие инструменты как node.js & phonegap открывают перспективы серверной и кроссплатформерной разработки в первом случае, и мобильной во втором. Пробовал свои силы и там и там, но пока нет желания/стимула углублятся в какую-либо из них. Пытаюсь определить, что мне будет интересно, а также выгодно в долгосрочной перспективе. Глобально, смотрю в сторону Artificial Intelligence. Читаю книгу Искусственный интеллект. Современный подход, параллельно прохожу онлайн курсы. Забавно, оказалось, что я запилил ряд простых вещей из этой области еще до ее изучения =) Также рассматриваю направление анализа данных. Сам не знаю, что хочу. Выясняю =)
-
Пиши код на js
-
Каскадные таблицы стилей для этого существуют
-
Погуглил за вас https://tech.yandex.ru/maps/doc/jsapi/2.0/ref/reference/GeoObject-docpage/#param-options.openBalloonOnClick https://tech.yandex.ru/maps/jsbox/2.1/icon_customImage
-
кажется, у @psywalker есть статьи на все случаи жизни. Этой и загробной. Для тех, кто в нее верит =)