if (stat(filename) == -1) {
// file doesn't exist
}
Такой код прижился только в C, и только там он является общепринятым и понятным.
В скриптовых языках программирования не следует возвращать -1 как признак (не)успешного выполнения функции, а в JS осторожно нужно быть и со всякими null/undefined. Вообще, канонически правильного способа вернуть ошибку толком-то и нет; сишный errno
— это страшный костыль, за который потомки до сих пор благодарны нам. Сишный же способ передать указатель на переменную тоже не самое элегантное решение, и имеет право на жизнь только там, где все программисты этот паттерн знают и хорошо к нему привыкли.
В случае JavaScript нужно просто пройти все пять стадий принятия и договориться с собой, что ты возвращаешь из функции структуру вида
return {
success: true,
user: {
id: ...
}
}
Ключевые понятия:
if (!result)
;const count = returnCount()
и затем if (count === null) { /* нету */ }
;success
. Не нужно его опускать, полагаясь на то, что в этом случае result.success == false
;parseUserAndAugmentWithIds(user = {})
;Еще можно делать так:
class DeleteFile {
static perform(path) {
// ...
return DeleteFile.SUCCESS;
}
}
DeleteFile.SUCCESS = 'success';
DeleteFile.NOT_FOUND = 'notFound';
// ...
if (DeleteFile.perform(filename) != DeleteFile.SUCCESS) {
// бля
}