05.11.2014, 21:17
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Каноничный пример
function echoit($msg) {
echo '<br><pre>';
if($msg)
echo htmlents(print_r($msg, true));
else
var_dump($msg); // без этой штуки увидишь вместо null и false - ничего
echo '</pre><br>';
}
Такое впечатление что JS планировался для домохозяек, которые если null не увидят, то неделю будут его искать.
Я интерфейс не рендерю, а кто рендерит - они как эти бесконечные нуллы обходят?
|
|
05.11.2014, 21:28
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,590
|
|
Потому что title - строка. Что бы ты не записал туда - оно будет приведено к строке. Что тут непонятного?
Никак не обходят, никаких null в интерфейс попасть не может.
__________________
29375, 35
|
|
05.11.2014, 21:32
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Это понятно, непонятно откуда берутся целых 4 буквы из null. Если там ничего не было, то в строке должно быть ""
|
|
05.11.2014, 21:33
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Сообщение от Aetae
|
Никак не обходят, никаких null в интерфейс попасть не может.
|
В первом предложении вы объяснили как оно туда попадает.
Только не надо про то что null это особый случай, что это специально так сделано. Любой нормальный программист естественно ожидает что null в строке станет или "" или 0 - не символ, а код.
|
|
05.11.2014, 21:40
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Если бы я title проверял на null, как я однажды проверял !dataset.somevar - так то я уже запомнил, что не будет там !, там будет строка из четырех букаф, мило, блин. Ну а если вы в консоли видите null - откуда уверенность что он в интерфейс не попадет? Откуда-то взялся где его вернули, вы ставляете, вместо пусто - хрень какая непонятная домохозяйкам.
|
|
05.11.2014, 21:50
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,590
|
|
Хватит воевать с языком. Примитивы в javascript преобразуются в строку как явно. Не "любой программист" ожидает, а ты ожидаешь. Так устроен js и не иначе. Хочешь пустую строку - выводи пустую строку, а не рандомную хрень.
__________________
29375, 35
|
|
06.11.2014, 07:33
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Я задал конкретный вопрос как делают чтобы нуллы не попадали в интерфейс. Где нажать, что профтыкать в прото типа, чтобы не проверять каждый раз кто там что вернул и как оно обернется.
|
|
06.11.2014, 07:39
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Сообщение от Aetae
|
Примитивы в javascript преобразуются в строку как явно
|
Как-то не весь ява-скрипт:
var WshShell = WScript.CreateObject("WScript.Shell");
strPath = WshShell.currentDirectory;
var fso = new ActiveXObject("Scripting.FileSystemObject");
var text = ['one', 'two', null, 0, false, true, null, "0", 0];
var out_file_name=fso.BuildPath(strPath, 'test_null.txt');
var ts = fso.CreateTextFile(out_file_name, true, true);
ts.Write(text.join("\n"));
ts.Close();
Код:
|
test_null.txt
one
two
0
false
true
0
0 |
|
|
06.11.2014, 07:46
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Существует поверье что при нестрогом сравнении "нет" вычисляется для: "" пустой строки, [], пустого массива, 0 - нуля, null и false (хотя false это все что !0 бинарно). Когда пофигу то ! должен работать на всем перечисленном. Когда не пофигу, тогда === пофигу.
|
|
06.11.2014, 15:34
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
И тут я вспомнил что в __toString() рендер не показывает true и false и захотел показать. И что вы думаете? Оказывается в php вообще нет нормальных методов приведения boolean к строке. var_export() корежит все остальное, а strval() фактически явный вызов неявной функции. В итоге true получается 1, а false == "". Полегчало когда понял что смысла нет. Идиотизм же в html, капец: autocomplete="off" novalidate="on" disabled="true" readonly вообще индикатор.
|
|
|
|