...
- как правильно объявить переменную и задать ей значение: 'a = 1;' или 'var a = 1;' или 'let a = 1;' или 'const a = 1;' или 'this.a = 1;' или 'self.a = 1;' или 'this.['a'] = 1;' или 'that.a= 1;' или 'лучше использовать параметр через замыкание вместо новой переменной'
- new Date(1, 31, 2016) - это "02 марта 2016"
- new Date("31.01.2016") - это "30 января 2016 22:00 UTC+3", а new Date("01.31.2016") - это "31 января 2016 00:00 UTC+3"
- Date.getMonth(), но Date.getFullYear(), а не Date.getYear()
- Date.setMonth, Date.setHours, но почему-то Date.setDate для 'day of the month'
- '===' и '==' - это два разных алгоритма сравнения
- NaN === NaN - это false
- NaN === NaN , isNaN и Number.isNaN - это разные алгоритмы
- Array.push/pop/slice, а classList.add/remove
- ParentNode.children, но ParentNode.childElementCount и даже ParentNode.firstElementChild
- ParentNode.children - это не то же самое что ParentNode.childNodes
- ParentNode.childNodes - это live NodeList, а document.querySelectorAll - тоже NodeList, только static (not live)
- (0.1 + 0.2) === 0.3 - нет, они не равны, это две разные цифры и результатом сравнения будет "false"
- как правильно вызвать метод: 'run();' или 'this.run();' или '_self.run();' или 'run.apply(myObj);' или 'run.call(myObj);' или 'run.call(myObj, arguments);' или 'run.apply(myObj, arguments);' или 'run.call(myObj, start, end);' или 'run.call(myObj, arguments);'
- как правильно объявить метод: 'function run(a) {}' или 'this.run = function (a) {};' или 'this.run = (a) => {};' или 'this.run = run.bind(this);' или 'return { run = run.bind(self) };' или 'class { function run(a) {}}' или 'class { run(a) {}}' или 'class { run = (a)=> {}}' или 'class { run(a) => {}}' и как в каждом варианте обращаться к переменным (локальным, внешним и this)
- декларация 'function run() {;' а вызов 'run(1, 2, 3)' потому что внутри можно 'arguments.forEach(...)'
- function ff() {
return
1;
}
вернет undefined; - for(;;), for(.. in ..) или for(.. of ..) или forEach?
- function.call или function.apply для array аргументов?
- new Array([1,2]) - это [[1,2]], а new Array(1, 2) - это [1,2]
- parseInt('10') - это 10, а parseInt('010') - это 8
И еще немного браузерных граблей:
- MouseEvent.screenX, MouseEvent.clientX, window view port scrollX getBoundingClientRect и MouseEvent.offsetX
- events конечно bubble, но если mousemove поверх div с position:absolute, то div под ним получит mouseleave
- Element.addEventListener, или "<div click="myFunc()", или "<div click="myFunc", или "onClick = myFunc", или "onClick = ()=>myFunc()"
- CustomEvent.type, а не CustomEvent.name
- var scrollHeight = Math.max(
document.body.scrollHeight, document.documentElement.scrollHeight,
document.body.offsetHeight, document.documentElement.offsetHeight,
document.body.clientHeight, document.documentElement.clientHeight
); - какое для чего и когда кого? +window.pageYOffset
нет, все нюансы бесполезно запомнинать...
проще поискать решение: google - найдется все!
Комментариев нет:
Отправить комментарий