Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.01.2010, 15:35
Аватар для Niar
Труъ кодер
Отправить личное сообщение для Niar Посмотреть профиль Найти все сообщения от Niar
 
Регистрация: 20.01.2010
Сообщений: 194

Дэвид Флэнаган
Книга конечно очень хорошая и качественная. Но иногда встречаются просто глупые опечатки. Тестируешь код а потом ломаешь голову почему это не работает.
Например
switch(n) {
case 1: // Выполняется, если n == 1
// Исполняем блок кода 1.
break; // Здесь останавливаемся
case 2: // Выполняется, если n == 2
// Исполняем блок кода 2.
break; // Здесь останавливаемся
case 3: // Выполняется, если n == 3
// Исполняем блок кода 3.
break; // Здесь останавливаемся
default: // Если все остальное не подходит...
// Исполняем блок кода 4.
break; // Здесь останавливаемся
}

Вот пример работы switch из книги. Однако!
Блоки кода выполняются не если n==1(2,3 нужное подчеркнуть) а если n===1(2,3);
Или вот еще
break: имя_метки;

Так описан синтаксис break с именем метки. Однако двоеточия там быть не должно.

Почитал соседние топики. Абсолютно глупая фраза. Толи это ошибка перевода и он имел ввиду что-то другое то ли я ни чего не понимаю
Цитата:
Прежде всего следует заметить, что попытка преобразования непустых объектов в логическое значение дает в результате значение true. Это справедливо для любых объектов (включая массивы и функции), даже для объектов оберток, которые представляют элементарные типы, при другом способе преобразования дающие значение false.
Или например почему он постоянно говорить объекты и массивы. Как будто массивы это не объекты. Нужно говорить в том числе массивы.
__________________
http://www.free-lance.ru/users/Nia173 Мой аккуант на free-lance.

Последний раз редактировалось Niar, 25.01.2010 в 11:21.
Ответить с цитированием
  #2 (permalink)  
Старый 28.01.2010, 15:41
Аватар для Niar
Труъ кодер
Отправить личное сообщение для Niar Посмотреть профиль Найти все сообщения от Niar
 
Регистрация: 20.01.2010
Сообщений: 194

Кстати я пообещал себе купить бумажный вариант книги как только сделаю первый сайт на заказ
__________________
http://www.free-lance.ru/users/Nia173 Мой аккуант на free-lance.
Ответить с цитированием
  #3 (permalink)  
Старый 29.01.2010, 10:04
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от Niar
Или вот еще
break: имя_метки;
у меня такого нету, это может быть ошибка какого-нибудь FineReader'а или чем оно там сделано

Сообщение от Niar
Прежде всего следует заметить, что попытка преобразования непустых объектов в логическое значение дает в результате значение true. Это справедливо для любых объектов (включая массивы и функции), даже для объектов оберток, которые представляют элементарные типы, при другом способе преобразования дающие значение false.
и что тут глупого?

Сообщение от Niar
Или например почему он постоянно говорить объекты и массивы. Как будто массивы это не объекты. Нужно говорить в том числе массивы.
ну тогда давай цитату
Ответить с цитированием
  #4 (permalink)  
Старый 29.01.2010, 20:17
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от Niar Посмотреть сообщение
Вот пример работы switch из книги. Однако!
Блоки кода выполняются не если n==1(2,3 нужное подчеркнуть) а если n===1(2,3);
на следующей странице через 2 абзаца поясняется что, цитирую дословно: Факт совпадения определяется в соответствии с оператором идентичности ===, а не оператором равенства==, поэтому выражения должны совпадать без какого-либо преобразования типов.

Сообщение от Niar Посмотреть сообщение
Почитал соседние топики. Абсолютно глупая фраза. Толи это ошибка перевода и он имел ввиду что-то другое то ли я ни чего не понимаю
Здесь все нормально, нужно просто понимать о чем речь, это так сказать "фича" js. например в конструкции if сравниваешь объект строку, думаешь щаз она вернет false и условие не выполнится, а она бламс и true и вперед долгие часы дебага

Сообщение от Niar Посмотреть сообщение
Или например почему он постоянно говорить объекты и массивы. Как будто массивы это не объекты. Нужно говорить в том числе массивы.
Здесь делается акцент на различия в конструкциях, под объектом подразумевается конструкция вида
{ key: value }
, а под массивом
[val1,val2,val3] или var[int index] = val

А так, как в js объектами являются еще и Date, RegExp, Function, то автор пытается не запутать читателя, который возможно пришел из языка в котором объекты это объекты а массивы это массивы, а ассоциативные массивы это ассоциативные массивы, а не объекты.

Последний раз редактировалось Gozar, 29.01.2010 в 20:35.
Ответить с цитированием
  #5 (permalink)  
Старый 30.01.2010, 09:38
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,566

Сообщение от Niar Посмотреть сообщение
Кстати я пообещал себе купить бумажный вариант книги как только сделаю первый сайт на заказ
Вот на этом форуме конкурс намечается. Если знаешь PHP можешь участвовать. Приз там обычно - любая книга.
Ответить с цитированием
  #6 (permalink)  
Старый 30.01.2010, 15:06
Аватар для mycoding
NodeJS developer - ушел
Отправить личное сообщение для mycoding Посмотреть профиль Найти все сообщения от mycoding
 
Регистрация: 06.01.2010
Сообщений: 1,022

Наверное ты уже разобрался, но все же напишу, не надо делать ===
просто можно в кавычки значения поставить.
switch(n) {
case '1': // Выполняется, если n == 1
// Исполняем блок кода 1.
break; // Здесь останавливаемся
case '2': // Выполняется, если n == 2
// Исполняем блок кода 2.
break; // Здесь останавливаемся
case '3': // Выполняется, если n == 3
// Исполняем блок кода 3.
break; // Здесь останавливаемся
default: // Если все остальное не подходит...
// Исполняем блок кода 4.
break; // Здесь останавливаемся
}

А вообще мне Давид Флэнаган нравится, но нужно такое усилие, чтобы это читать, примеры не очень я бы сказал, впечатление такое, что он просто спешил, и не успевал, нормальное придумывать. Хотя если учесть какие другие книги, то это просто супер.
__________________
Не вижу смысла в своём прибывании на форуме.
Всех достал.
Работу здесь я не найду - хотя не однократно пытался.
Знаний подчерпнуть тоже не могу.

Меняю пароль и адрес электронной почты, чтобы больше никого не доставать.

Всем удачи.
Ответить с цитированием
  #7 (permalink)  
Старый 31.01.2010, 03:36
Аватар для Мараторий
Кандидат Javascript-наук
Отправить личное сообщение для Мараторий Посмотреть профиль Найти все сообщения от Мараторий
 
Регистрация: 22.01.2010
Сообщений: 114

mycoding,
Что-то я не понял вашу мысль.
var n = 1;
switch(n) {
  case '1': alert(1); break;
  case '2': alert(2); break;
  default: alert("def");
}

И что же выдаст скрипт?
А вы говорите "Выполняется, если n == 1"
Ответить с цитированием
  #8 (permalink)  
Старый 31.01.2010, 07:58
Аватар для Niar
Труъ кодер
Отправить личное сообщение для Niar Посмотреть профиль Найти все сообщения от Niar
 
Регистрация: 20.01.2010
Сообщений: 194

Цитата:
Здесь все нормально, нужно просто понимать о чем речь, это так сказать "фича" js. например в конструкции if сравниваешь объект строку, думаешь щаз она вернет false и условие не выполнится, а она бламс и true и вперед долгие часы дебага
Пример можно?
Цитата:
на следующей странице через 2 абзаца поясняется что, цитирую дословно: Факт совпадения определяется в соответствии с оператором идентичности ===, а не оператором равенства==, поэтому выражения должны совпадать без какого-либо преобразования типов.
Я видел но ошибка то всё равно есть
__________________
http://www.free-lance.ru/users/Nia173 Мой аккуант на free-lance.
Ответить с цитированием
  #9 (permalink)  
Старый 31.01.2010, 09:25
Аватар для mycoding
NodeJS developer - ушел
Отправить личное сообщение для mycoding Посмотреть профиль Найти все сообщения от mycoding
 
Регистрация: 06.01.2010
Сообщений: 1,022

Сообщение от Мараторий Посмотреть сообщение
mycoding,
Что-то я не понял вашу мысль.
var n = 1;
switch(n) {
  case '1': alert(1); break;
  case '2': alert(2); break;
  default: alert("def");
}

И что же выдаст скрипт?
А вы говорите "Выполняется, если n == 1"
Да я ошибся извините )))
__________________
Не вижу смысла в своём прибывании на форуме.
Всех достал.
Работу здесь я не найду - хотя не однократно пытался.
Знаний подчерпнуть тоже не могу.

Меняю пароль и адрес электронной почты, чтобы больше никого не доставать.

Всем удачи.
Ответить с цитированием
  #10 (permalink)  
Старый 31.01.2010, 10:08
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от Niar Посмотреть сообщение
Пример можно?

Я видел но ошибка то всё равно есть
var obj = new String('');
	false===obj ? alert('false') : alert('true'); // true

	str = '';
	false===str ? alert('false') : alert('true'); // true


По поводу ошибка не ошибка. 2 это цифра и тип у неё number, n==2 правильно.
Ответить с цитированием
Ответ


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

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