Пропустить теорию и перейти прямо к задачам
Ссылка на учебник: http://learn.javascript.ru
Сразу расскажу про несколько особенностей яваскрипта, о которых может быть не написано (или мало написано) в учебниках, но которые стоит понимать:
| function declOfNum(number, titles) { | |
| cases = [2, 0, 1, 1, 1, 2]; | |
| return titles[ (number%100>4 && number%100<20)? 2 : cases[(number%10<5)?number%10:5] ]; | |
| } | |
| use: | |
| declOfNum(count, ['найдена', 'найдено', 'найдены']); |
Пропустить теорию и перейти прямо к задачам
Ссылка на учебник: http://learn.javascript.ru
Сразу расскажу про несколько особенностей яваскрипта, о которых может быть не написано (или мало написано) в учебниках, но которые стоит понимать:
| // Safari, in Private Browsing Mode, looks like it supports localStorage but all calls to setItem | |
| // throw QuotaExceededError. We're going to detect this and just silently drop any calls to setItem | |
| // to avoid the entire page breaking, without having to do a check at each usage of Storage. | |
| if (typeof localStorage === 'object') { | |
| try { | |
| localStorage.setItem('localStorage', 1); | |
| localStorage.removeItem('localStorage'); | |
| } catch (e) { | |
| Storage.prototype._setItem = Storage.prototype.setItem; | |
| Storage.prototype.setItem = function() {}; |
| ### NOT A SCRIPT, JUST A REFERENCE! | |
| # install dante-server | |
| sudo apt update | |
| sudo apt install dante-server | |
| # or download latest dante-server deb for Ubuntu, works for 16.04 / 18.04 / 20.04: | |
| wget http://archive.ubuntu.com/ubuntu/pool/universe/d/dante/dante-server_1.4.2+dfsg-7build5_amd64.deb | |
| # or older version: | |
| wget http://ppa.launchpad.net/dajhorn/dante/ubuntu/pool/main/d/dante/dante-server_1.4.1-1_amd64.deb |
| import { useEffect, useState } from 'react' | |
| type TUseMatchMedia = { | |
| isDesktopSize: boolean | |
| isTabletSize: boolean | |
| isMobileSize: boolean | |
| } | |
| const useMatchMedia = (): TUseMatchMedia => { | |
| const mobileQuery = window.matchMedia('(min-width: 320px) and (max-width: 767px)') |