code_notes pinned «когда-то я готовилась к собеседованиям по вот этому списку задачек https://github.com/lydiahallie/javascript-questions/blob/master/ru-RU/README.md»
code_notes pinned «https://ru.hexlet.io/blog/posts/grokaem-algoritmy-gayd-po-algoritmam-dlya-teh-komu-slozhno-reshat-zadachi»
я отвернулась и в css добавили новую киллер-фичу
@layer
по-русски "каскадные слои"
теперь мы можем создавать свои слои вдобавок к существующим (user agent styles, user styles, author styles (те которые мы меняем))
в каскадных слоях важен порядок объявления — чем позже объявлен слой, тем он специфичнее
можно объявить все названия слоёв в начале документа чтобы не путаться
@layer
по-русски "каскадные слои"
теперь мы можем создавать свои слои вдобавок к существующим (user agent styles, user styles, author styles (те которые мы меняем))
в каскадных слоях важен порядок объявления — чем позже объявлен слой, тем он специфичнее
можно объявить все названия слоёв в начале документа чтобы не путаться
@layer reset, framework, layout, base;запутанный момент —
!important
правила, объявленные через important действуют в обратном порядке — important в слое reset будет специфичнее important в слое basevar status = '😎'
setTimeout(() => {
const status = '😍'
const data = {
status: '🥑',
getStatus() {
return this.status
}
}
console.log(data.getStatus())
console.log(data.getStatus.call(this))
}, 0)
🥑 😎
Object.seal vs Object.freeze
Object.seal позволяет изменять существующие свойства объекта. Запрещает удалять их или добавлять новыеObject.freeze делает объект иммутабельным и запрещает любые модификацииconst a = { name: 'a' }
const b = { name: 'b' }
Object.seal(a)
a.name = "c"
{name: 'c'}
Object.freeze(b)
b.name = 'c'
{name: 'b'}
function sum(a) {
let currentSum = a;
function f(b) {
currentSum += b;
return f;
}
f.toString = function () {
return currentSum;
};
return f;
}
alert(sum(1)(2)(3)(5));
👍3
чтобы скролл не перекидывался на внешнее окно
overscroll-behavior: contain;👍3🔥2🤯1