Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 05.11.2014, 21:17
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 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 не увидят, то неделю будут его искать.

Я интерфейс не рендерю, а кто рендерит - они как эти бесконечные нуллы обходят?
Ответить с цитированием
  #12 (permalink)  
Старый 05.11.2014, 21:28
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

Потому что title - строка. Что бы ты не записал туда - оно будет приведено к строке. Что тут непонятного?
Никак не обходят, никаких null в интерфейс попасть не может.
__________________
29375, 35
Ответить с цитированием
  #13 (permalink)  
Старый 05.11.2014, 21:32
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Это понятно, непонятно откуда берутся целых 4 буквы из null. Если там ничего не было, то в строке должно быть ""
Ответить с цитированием
  #14 (permalink)  
Старый 05.11.2014, 21:33
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от Aetae
Никак не обходят, никаких null в интерфейс попасть не может.
В первом предложении вы объяснили как оно туда попадает.

Только не надо про то что null это особый случай, что это специально так сделано. Любой нормальный программист естественно ожидает что null в строке станет или "" или 0 - не символ, а код.
Ответить с цитированием
  #15 (permalink)  
Старый 05.11.2014, 21:40
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Если бы я title проверял на null, как я однажды проверял !dataset.somevar - так то я уже запомнил, что не будет там !, там будет строка из четырех букаф, мило, блин. Ну а если вы в консоли видите null - откуда уверенность что он в интерфейс не попадет? Откуда-то взялся где его вернули, вы ставляете, вместо пусто - хрень какая непонятная домохозяйкам.
Ответить с цитированием
  #16 (permalink)  
Старый 05.11.2014, 21:50
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

Хватит воевать с языком. Примитивы в javascript преобразуются в строку как явно. Не "любой программист" ожидает, а ты ожидаешь. Так устроен js и не иначе. Хочешь пустую строку - выводи пустую строку, а не рандомную хрень.
__________________
29375, 35
Ответить с цитированием
  #17 (permalink)  
Старый 06.11.2014, 07:33
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Я задал конкретный вопрос как делают чтобы нуллы не попадали в интерфейс. Где нажать, что профтыкать в прото типа, чтобы не проверять каждый раз кто там что вернул и как оно обернется.
Ответить с цитированием
  #18 (permalink)  
Старый 06.11.2014, 07:39
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 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
Ответить с цитированием
  #19 (permalink)  
Старый 06.11.2014, 07:46
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Существует поверье что при нестрогом сравнении "нет" вычисляется для: "" пустой строки, [], пустого массива, 0 - нуля, null и false (хотя false это все что !0 бинарно). Когда пофигу то ! должен работать на всем перечисленном. Когда не пофигу, тогда === пофигу.
Ответить с цитированием
  #20 (permalink)  
Старый 06.11.2014, 15:34
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

И тут я вспомнил что в __toString() рендер не показывает true и false и захотел показать. И что вы думаете? Оказывается в php вообще нет нормальных методов приведения boolean к строке. var_export() корежит все остальное, а strval() фактически явный вызов неявной функции. В итоге true получается 1, а false == "". Полегчало когда понял что смысла нет. Идиотизм же в html, капец: autocomplete="off" novalidate="on" disabled="true" readonly вообще индикатор.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В Chrome жму "Назад", в место страницы выводит выводит json frost18 AJAX и COMET 6 12.08.2014 11:10
Почему некоторые операторы возвращают значения, а не ссылки? dump Общие вопросы Javascript 15 25.07.2012 17:28
Регулярные выражения. Почему находи именно так? jsuse Общие вопросы Javascript 4 21.11.2011 16:37
Свойства объекта, методы и this. Почему свойство вызывается с () ? jsuse Общие вопросы Javascript 2 04.11.2011 20:39
Prototype. Одноблочное определение псевдокласса. Литеральная форма не робит. Почему? GuardCat Общие вопросы Javascript 6 03.10.2011 13:46