Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.07.2011, 12:29
Аватар для mycoding
NodeJS developer - ушел
Отправить личное сообщение для mycoding Посмотреть профиль Найти все сообщения от mycoding
 
Регистрация: 06.01.2010
Сообщений: 1,022

JavaScript: The Good Parts
Хочу поговорить о
видео курсе Douglas Crockford JavaScript Master Class
http://oreilly.com/catalog/9780596809614
и книге
javascript: The Good Parts
http://oreilly.com/catalog/9780596517748

В принципе это одно и тоже.

У меня возникли вопросы по ходу просмотра видео.
Сомнения в том, а стоит ли применять то, что там советуется.

Мне хочется узнать Ваше мнение.

Те советы, которые вызвали сомнение:
1 - Чтобы сделать из строки число делать так
+x.
Когда я был на Мастер Классах Ильи Кантора, он тоже про это говорил.
Также этот метод есть во Флэнагане.
Я уже и сам не помню когда делал из строки число.
Просто мне это не надо.

Но такой способ напоминает хак метод, а все хак методы - это плохо.
Лучше их избегать.

2 -
Советуется вместо вот этого
for(var i=0;i<1000000000;i++){}
Делать вот так
for(var i=0;i<1000000000;i+=1){}
Или даже вот так(не помню было это или нет, но вроде было)
var i;
for(i=0;i<1000000000;i++){}

Вроде бы утверждалось, что так быстрее.
Проверил на производительность в браузерах.
var t1 = new Date().getTime();
var a=0;
for(var i=0;i<1000000;i+=1){
	a+=i;
}
var t2 = new Date().getTime();
console.log(t2-t1);

Производительность также.
Даже проверил на NodeJS в 10 миллиардов итераций
производительность одинаковая
var t1 = new Date().getTime();
var a=0;
for(var i=0;i<10000000000;i+=1){
	a+=i;
}
var t2 = new Date().getTime();
console.log(t2-t1);


3 - Советуется не использовать ==, а использовать ===.
Илья Кантор тоже про это говорил.
И в книге Фленагана это тоже есть.
Меня лично == никогда не подводил.
Я понимаю в чем разница между == и === и меня == вполне устраивает.

Также приводился пример
Что
0.1+0.2 === 0.3 false
0.1+0.2 == 0.3 false

И у Ильи это было и во Фленагане тоже есть.
С этим спора нет.

Вот наверное и всё, что запомнилось необычного и с чем в той или иной форме не согласен.

Теперь Ваше мнение.

Последний раз редактировалось mycoding, 01.07.2011 в 12:33.
Ответить с цитированием
  #2 (permalink)  
Старый 01.07.2011, 13:14
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,486

1. +n - способ изначально предусмотренный языком.
2. Глупости.)
3. На счет === это вы зря, вещь весьма нужная.
Самый частый случай:
alert(0=='')
alert(0==='')
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 01.07.2011, 17:04
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

1. c +n могут быть фокусы:
-n или даже n*1.

alert('2'+'1');        //21 опа
alert('2'+'1'*1);     //21 опа
alert('2'*1+'1'*1);  //3
alert('2'-'1');     //1
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #4 (permalink)  
Старый 01.07.2011, 17:22
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Gozar
1. c +n могут быть фокусы:
Унарный и бинарный плюс -- разные операторы.
Ответить с цитированием
  #5 (permalink)  
Старый 01.07.2011, 17:53
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от Kolyaj Посмотреть сообщение
Унарный и бинарный плюс -- разные операторы.
а что?
alert((+'2')+(+'1'));        //3

но для меня такой код менее очевиден, чем *1. Или здесь что-то кроется?
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #6 (permalink)  
Старый 01.07.2011, 18:06
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

2. Вообще говоря, ++i и i+=1 быстрее, чем i++, но современные JS движки умеют выполнять целую массу всевозможных оптимизаций, так что можно не париться.
Ответить с цитированием
  #7 (permalink)  
Старый 01.07.2011, 18:36
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Gozar
а что?
Что а что? mycoding пишет про унарный плюс, а вы приводите примеры по бинарный.
Ответить с цитированием
  #8 (permalink)  
Старый 01.07.2011, 18:42
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от mycoding
for(var i=0;i<1000000000;i+=1){}
вариантов этого цикла множество.
for(var i = 0, j = 10; i < j; ++i);
for(var i = 10; i--;);

var i = 10;
while(i--);

var i = 10;
while(i-- > 0); //этот кстати самый быстрый

var i = -1;
while(++i < 10);

Сообщение от mycoding
+x.
Но такой способ напоминает хак метод, а все хак методы - это плохо.
Лучше их избегать.
т.е. корректней приводить значение с помощью Number(), parseInt() ...?.
Сообщение от mycoding
3 - Советуется не использовать ==, а использовать ===.
там где это важно - да.
alert([undefined == null, undefined === null]);

Сообщение от mycoding
0.1+0.2 === 0.3 false
0.1+0.2 == 0.3 false
ну так

Последний раз редактировалось monolithed, 01.07.2011 в 18:45.
Ответить с цитированием
  #9 (permalink)  
Старый 01.07.2011, 19:21
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от Kolyaj Посмотреть сообщение
Что а что? mycoding пишет про унарный плюс, а вы приводите примеры по бинарный.
alert(+'2'++'1')

такой пример больше подойдет?
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #10 (permalink)  
Старый 01.07.2011, 20:25
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Gozar
такой пример больше подойдет?
Нет. Теперь тут инкремент
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Книга] Stoyan Stefanov, Javascript Patterns Dmitry A. Soshnikov Учебные материалы 20 13.08.2013 11:37
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34
Москва, ищу JavaScript программиста отлично знающего ExtJS, от 10 USD / час. maximgb Работа 3 03.08.2010 14:34
JavaScript на Яндекс.Фотки - почему тормозит браузеры? ZavFirefox Javascript под браузер 23 27.09.2009 19:24