Comments 17
За
Access-Control-Allow-Origin *
надо руки отрывать.За рекомендацию всегда ставить там * — да, надо. А за наличие публичного или защищенного другими механизмами API руки отрывать не обязательно…
Дополню, что можно ставить
чтобы видеть тексты ошибок.
<script crossorigin='anonymous'
чтобы видеть тексты ошибок.
Разработчикам Github, Яндекс карт и многим другим тоже отрывать будете?
Сейчас мы проанализируем каждую из них, расскажем о том, что их вызывает, и о том, как с ними бороться.
и как же бороться с ошибкой 9?
Вовремя инициализировать свои объекты и проверять перед использованием чужие.
я в таких случаях делаю что-то типа
думал может есть способы по чище
var test = undefined;
if (!test) {
test = {
value: 0
}
}
test.value = 0;
думал может есть способы по чище
Можно для начала попробовать просто включить strictNullChecks опцию компиляции в TypeScript.
А почему нельзя просто использовать проерку содержимого?
или просто
if (value === typeof 'string') { // 'function', 'number', Array.isArray(value)
// code
}
или просто
if (!value) return;
вобще не приятно, когда падает на Cannot set property '...' of undefined
круто было бы, еслиб котнструкция типа if (!value) return; была в прототипах объектов
круто было бы, еслиб котнструкция типа if (!value) return; была в прототипах объектов
Если объект такой, что undefined — и хрен с ним, то конечно. А вот собрался человек на свадьбу ехать,
— а такси не приехало. Undefined. Вот это вот
var taxi = getTaxi();
taxi.addPassenger(self);
— а такси не приехало. Undefined. Вот это вот
if (!value) return
, его же люди не поймут. Прежде всего — [его] невеста.Пример с React
и state
в первом пункте не совсем правильный. Ошибкой будет
Cannot read property 'items' of null
так как явно не указан state
, а по умолчанию он равен null
В более современных браузерах можно использовать метод bind() для передачи необходимой ссылки:
В более современных браузерах — это во всех начиная с 13 года. То есть, традиционный подход как раз с bind/call/apply
. А подход с кешированием this
от незнания того что bind
существует.
сарказм on
Это примерно как говорить, что традиционный способ вёрстки — табличный. А последние браузеры ещё и блочный поддерживают.
var test = {};
if (typeof test !== "undefined") {
test.value = 1;
console.log(test.value);
} else {
console.log("wtf is 'test'");
}
test = undefined;
if (typeof test !== "undefined") {
test.value = 1;
console.log(test.value);
} else {
console.log("wtf is 'test'");
}
Sign up to leave a comment.
Топ-10 ошибок из 1000+ JavaScript-проектов и рекомендации по их устранению