Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Ваши самые частые ошибки? (https://javascript.ru/forum/offtopic/67644-vashi-samye-chastye-oshibki.html)

Diphenyl Oxalate 28.02.2017 20:41

Ваши самые частые ошибки?
 
Что вы чаще всего видите в консоли, когда после очередного изменения падает весь скрипт?

У меня это:

- опечатки (не закрыл скобку, кавычку и т.д.)

- описки

var elem = document.createElement("DIV");
document.body.appendChild("DIV"); // WRONG_ARGS_ERR
// или
var elem = document.body.createElement("DIV");


Или лишняя точка с запятой при перечислении в объекте, которую по привычке добавляешь ставишь после длинной строки:

var params = {
	// [...]
	// [...]
	cellDefaultStyles : "длинная-длинная" +
						"строка со стилями";
}


Здесь:

if ( N.indexOf("px") != -1 )


всё хорошо, но только пока в N не попадёт какой-нибудь event.clientX.

Порой случается маразм при копировании небольших кусков кода:

var Header = document.createElement("DIV");
document.body.appendChild(Header);
Header.style.cssText = options.headerStyles;

var Content = document.createElement("DIV");
document.body.appendChild(Header);
Header.style.cssText = options.contentStyles;


elem.style.heigth
elem.style.visibility = "none";


Бессмертная классика.

<script type="text/javascript>
// [...]
// [...]


Можно впасть в психоз, /*комментируя*/ куски кода один за другим. В итоге даже простой алерт не работает, консоль молчит, привычная картина мира начинает сыпаться.
А я ещё люблю при написании скрипта отбить всё переносами строки, чтобы html не отвлекал и перед глазами был только код на js, т.е. этого <script> мне вообще не видно.

elem.style.top = fn(event.clientX);


Обычно ошибку видно сразу, но только если параметры не обрабатываются в нескольких местах... Тогда отладка может занять до двух часов, ведь ошибку ищешь в формулах, когда на деле просто перепутаны top и left.

for (var i = 0; i < K; i++) {
	elems[i].onclick = function () {
		Fn(i); // всегда будет подавать K
			// если вы недостаточно быстрый, чтобы
			// кликнуть до того, как отработает for (шутка)

destus 01.03.2017 07:17

Очень не хватает Elvis оператора.
var o = {}
if (o.coords.lat) {}
//Uncaught TypeError: Cannot read property 'lat' of undefined

Ну а так, большинство опечаток/ошибок решаются/фиксятся на этапе написания кода, благодаря IDE и линтеру. В TypeScript, с этим ещё проще.

palinka 21.05.2017 06:22

да такие ошибки у каждого бывают. Это скорее описки, нежели чем ошибки.

j0hnik 31.08.2017 08:40

Diphenyl Oxalate,
Если Sublime пользуетесь, установите Sublime Linter, jslint
https://habrahabr.ru/post/262137/
и скобки, точки с запятой останутся в прошлом.

у меня самые частые = опечатки в названиях селекторов и кривые регулярки =(

ksa 31.08.2017 09:09

Цитата:

Сообщение от j0hnik
установите Sublime Linter, jslint
https://habrahabr.ru/post/262137/
и скобки, точки с запятой останутся в прошлом.

Нужно сразу набирать парные символы и сразу ставить ";"... Уже много лет никаких проблем... ;)

MallSerg 31.08.2017 11:53

вера в себя, доверие к людям.

Rasy 31.08.2017 15:35

Цитата:

Сообщение от j0hnik
опечатки в названиях селекторов

Для этого использую отдельный объект с классами. А дальше тот же автоподбор в саблайме.

nerv_ 01.09.2017 14:36

Цитата:

Сообщение от MallSerg
доверие к людям

++

ruslan_mart 04.09.2017 10:40

div1.onclick = this.handler.bind(this);
div2.onclick = this.handler.bind(this, true);
	
...handler = function(isDiv2) {
	if(isDiv2) {
		...
	}
}


Всегда сработает условие isDiv2, потому что по дефолту в аргумент придёт объект Event. Поэтому нужно биндить false.

derevyanayapalochka 28.10.2017 22:28

Как правило опечатки,либо скобки забудешь закрыть,да и при копировании кодов всякое бывает.


Часовой пояс GMT +3, время: 20:06.