Я догадался только до *такого*
{this.thematics.map(thematic => (
<div style={style} key={thematic.id}>
{thematic.id}
</div>
))}
<Switch>
<Route path = '/contacts' component = { ContactsPage } />
<Route path = '/payment' component = { PaymentPage } />
<Route render={() => { return <Redirect to="/" />; }} />
</Switch>
<Route path="/(contacts|payment)/" component={BigComponent /} />
s = 'STRING'
ss = "something {s} something"
ss.replace(/{(.+)}/, function() { return window[arguments[1]] })
// "something STRING something"
function rus_to_latin (s) {
return s.split('')
.map(l => ru[l] || ru[l.toLowerCase()] && ru[l.toLowerCase()].toUpperCase() || l)
.join('')
}
Всё работает, если у отправителя разрешён доступ небезопасным приложениям, но не у всех он разрешён, вернее почти у всех он запрещён. Не буду же я у формы писать, мол разрешите доступ небезопасным приложениям
function fn(a, b, callback) {
if (typeof b === 'function') { callback = b }
callback('hello', a)
}
fn('world', 'aaaaa', console.log)
fn('world', console.log)
obj = {'asdf': 120, 'asdfsdf': 34, 'favcac': 5, 'sdfcy4': 623}
for(const [key, val] of Object.entries(obj)) {
console.log(key, val)
}
obj = {'asdf': 120, 'asdfsdf': 34, 'favcac': 5, 'sdfcy4': 623}
obj[Symbol.iterator] = function* () {
const values = Object.values(obj)
let count = 0
while(count < values.length) {
yield values[count]
count++
}
}
for(val of obj) console.log(val)
start = performance.now()
for (let i = 0; i < 999; i++) {
document.querySelectorAll('div').forEach(div => div.classList.toggle('testing'))
}
console.log('JAVASCRIPT TIMER: ', performance.now() - start)
start = performance.now()
for (let i = 0; i < 999; i++) {
$('div').each(function() { $(this).toggleClass('testing') })
}
console.log('JQUERY TIMER: ', performance.now() - start)
// VM692:5 JAVASCRIPT TIMER: 497.1950000617653
// VM692:12 JQUERY TIMER: 1562.6649999758229