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 ...
Author’s comment
Непонятна эта часть: that would happen to be truthy when zero ...
User translations (2)
- 1.
...чтобы избежать ошибок, когда программист верит, что он получил правильное число, что будет истиной, когда ноль...
Translator's comment
Желательно все предложение, тогда можно перевести корректно.
translation added by Vladislav P.Bronze en-ru4 - 2.
... чтобы избежать багов, когда программист считает, что он получил истинное число, которое могло стать истиным при нуле ...
translation added by Roman Grinyov0
Discussion (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., это кусок из комментария отсюда:
Наверное можно так: «чтобы избежать багов, когда программист считает, что он получил истинное число, которое могло стать истиным при нуле» ... Думаю, вопрос закрыт. Спасибо.