Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Unusual JavaScript (https://javascript.ru/forum/misc/60437-unusual-javascript.html)

Coriolan161 29.12.2015 20:57

Unusual JavaScript
 
Привет! У меня появилась и постепенно реализуется идея создания задачника по JavaScript. Он будет включать задания вроде:
  • "Найдите значение выражения",
    1 + 2 + "3";
    
  • "True или False?",
    new Array([],null,undefined,null) == ",,,"; // будет true)
    
  • "Что выведет код?",
    function b(x, y, a) {
        	arguments[2] = 10;
        	alert(a);
        }
        b(1, 2, 3);
    
  • "Найдите ошибку"
    <script src="file.js">
      alert(1); 
    </script>
    
И много других(касаемо работы с функциями, прототипного наследования).
При этом задания будут группироваться по степени сложности - чем ближе к концу, тем сложнее.
Определенному блоку заданий в конце раздела будет соответствовать поясняющая теория.

Я хочу сделать дополнительный раздел "Необычный JavaScript" - в нём будут размещены примеры "странного поведения" JavaScript. Конечно, понятие "странное поведение" весьма условно. Но это будут примеры сложной, неочевидной логики языка и читающим будет очень полезно для обучения разобрать их.

Буду очень признателен Вам, если поделитесь случаями "исключительного" поведения языка из своей практики или хитрыми примерами на понимание языка.

callbackhell 29.12.2015 23:10

Цитата:

Сообщение от Coriolan161
Буду очень признателен Вам, если поделитесь случаями "исключительного" поведения языка

Ты имеешь в виду wtf'ки?

первое что на ум приходит -- это е*тая 2-х проходная компиляция
if(false) function x (){a = 1}
x()
alert(a)

Причем в разных движках это работает со своими ньюансами. Одна из причин забыть о function declarations

callbackhell 29.12.2015 23:17

>>хитрыми примерами на понимание языка.
Вот на этом примере 90% разрабов ложается
with({a: 1}) a = 2, b = 3
alert([window.a, window.b])

callbackhell 29.12.2015 23:32

Вот еще тебе wtf, с ES6
new Promise(function(){}).then(function(){throw "err"})
setTimeout(function(){alert("no Error:)")}, 1000)

callbackhell 29.12.2015 23:46

На приведении типов можно здорово обосраться
if("" == 0) alert("'' == 0")
if("0" == 0) alert("'0' == 0")
if("00" == 0) alert("'00' == 0")
if("\t" == 0) alert("\t == 0" )

рони 30.12.2015 03:07

Coriolan161,
http://javascript.ru/forum/offtopic/...ovaniyakh.html

vasa_c 30.12.2015 08:56

Цитата:

У меня появилась и постепенно реализуется идея создания задачника по JavaScript
Подобная идея ни разу не оригинальна.
Таких "задачников" существует более чем нужно.

Только знание наизусть подобной чепухи никак не кореллирует со знанием чего-то полезного.

nerv_ 30.12.2015 14:56

Цитата:

Сообщение от vasa_c
Только знание наизусть подобной чепухи никак не кореллирует со знанием чего-то полезного.

именно :)

Coriolan161 09.02.2016 18:09

vasa_c,
1)
Цитата:

Подобная идея ни разу не оригинальна.
И что? Меня это никогда не останавливало.
Более того, многие мастистые товарищи пишут книги, несмотря на то, что полно написанного и неопубликованного до них. Кошмар, они не оригинальны! Я не понимаю твоей 'оригинальной' логики.

2)
Цитата:

Таких "задачников" существует более чем нужно.
И что? По-моему, здесь выбор за мной. Никто не запретит мне излагать своё виденье и что-то создавать. Друг ( не дай Бог конечно), не оценивай по первому впечатлению и не лепи кавычки.

3)
Цитата:

Только знание наизусть подобной чепухи
Ты по этой и более серьёзной чепухе учил язык, умник! Если нет (а…ты же 'оригинальный'), то изложи свой взгляд на подходы к начальному пониманию идеологии языка

К слову_1: существует множество веб-приложений с довольно похожим функционалом. Тем не менее, их продолжают создавать (с отличиями в User Interface). Нарисована куча картин и живописей - всё хорош! Нет, продолжают рисовать. И так далее.

К слову_2: Пойми, что мир не оригинален. Всё, что называется 'новым', есть суть обновленные старые идеи. Если тебе в голову пришла какая-то мысль, то это не значит, что она не пришла некоторому множеству других людей.
Например, у меня так было с LESS. Я некоторые свои мысли встретил в его функционале при знакомстве. В частности, примеси и &.

К слову_3: ты, наверно, и сам осознаешь 'ребячество' своих слов


Часовой пояс GMT +3, время: 04:54.