Thx, это я понимаю ... Однако комментарий о том, почему так сделали,.. и я вот вникаю что сказал автор «дословно» ... Хотя я думал, что в JS строка '0' — это «true»,.. так как учил его по JSR (learn.javascript.ru) и там указано, что «В отличие от многих языков программирования (например PHP), "0" в JavaScript является true, как и строка из пробелов» и пример: alert(!!'0'); то есть строка с нулём — «true», мы её отрицаем «!» — получаем «false», отрицаем ещё раз «!» — получаем «true» ... Что-то какая-то неоднозначность вышла у JS ... Или я чего-то не понял с этим (alert(!!'0')) примером: ?
... to avoid bugs where the programmer believes he got a true numeral that would happen to be truthy when zero ...
Комментарий автора
Непонятна эта часть: that would happen to be truthy when zero ...
Переводы пользователей (2)
- 1.
...чтобы избежать ошибок, когда программист верит, что он получил правильное число, что будет истиной, когда ноль...
Комментарий переводчика
Желательно все предложение, тогда можно перевести корректно.
Перевод добавил Vladislav P.Бронза en-ru4 - 2.
... чтобы избежать багов, когда программист считает, что он получил истинное число, которое могло стать истиным при нуле ...
Перевод добавил Roman Grinyov0
Обсуждение (5)
Пример с JS был неудачный. Строка "0" все-таки truthy, не falsy, а falsy становится только при сравнении из-за приведения типов с обоих сторон. И это не единственный прикол JS (-:
А в PHP строка "0" всегда будет falsy. И сделано это для consistency и во избежание багов. Это и хотел сказать автор комментария.
console.log ('0' == false ? 'falsy' : 'truthy'); // falsy!
console.log ('0' ? 'truthy' : 'falsy'); // truthy!
$ php -r "print ('0' ? 'truthy' : 'falsy');" // falsy
$ php -r "if ('0') { echo 'truthy'; } else { echo 'falsy'; }" // falsy
if ('0') { console.log ('truthy'); } else { console.log ('falsy'); } // truthy!
Да, сегодня шёл на работу и понял всё ... Спасибо за беседу.
Vladislav P., это кусок из комментария отсюда: просто как-то сложно автор, по-моему, выразился. Дело не программировании (с программированием мы уже с G C разобрались :)), а просто в правильном переводе — так как адекватный вариант что-то в голову не приходит.
Наверное можно так: «чтобы избежать багов, когда программист считает, что он получил истинное число, которое могло стать истиным при нуле» ... Думаю, вопрос закрыт. Спасибо.