renovations

This commit is contained in:
Ilya Kantor 2015-02-18 21:23:40 +03:00
parent 0eec1aaccb
commit c018a2db03
56 changed files with 459 additions and 594 deletions

View file

@ -112,7 +112,7 @@ var oranges = "3";
alert( +apples + +oranges); // 5, число, оба операнда предварительно преобразованы в числа
```
С точки зрения математики такое изобилие плюсов может показаться странном. С точки зрения программирования -- никаких разночтений: сначала выполнятся унарные плюсы, приведут строки к числам, а затем -- бинарный `'+'` их сложит.
С точки зрения математики такое изобилие плюсов может показаться странным. С точки зрения программирования -- никаких разночтений: сначала выполнятся унарные плюсы, приведут строки к числам, а затем -- бинарный `'+'` их сложит.
Почему унарные плюсы выполнились до бинарного сложения? Как мы сейчас увидим, дело в их приоритете.

View file

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="723px" height="562px" viewBox="0 0 723 562" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<!-- Generator: bin/sketchtool 1.3 (252) - http://www.bohemiancoding.com/sketch -->
<!-- Generator: Sketch 3.2.2 (9983) - http://www.bohemiancoding.com/sketch -->
<title>code-style.svg</title>
<desc>Created with bin/sketchtool.</desc>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="combined" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<g id="code-style.svg" sketch:type="MSArtboardGroup">

Before

Width:  |  Height:  |  Size: 126 KiB

After

Width:  |  Height:  |  Size: 126 KiB

Before After
Before After

View file

@ -78,12 +78,9 @@ div.append('<span/>');
В итоге, после вызова получается два независимых `div'а`: первый содержит `img` (этот неявный клон никуда не присвоен), а второй -- наш `span`.
Злая магия? Плохой феншуй?
Ничего подобного, просто избирательное следование соглашениям. Вызов `wrap` -- неявно клонирует элемент.
Такой сюрприз, бесспорно, стоит многих часов отладки.
Объяснения не очень понятны? Написано что-то странное? Это просто разум, привыкший, что соглашения уважаются, не допускает мысли, что вызов `wrap` -- неявно клонирует элемент. Ведь другие jQuery-методы, кроме `clone` этого не делают.
Как говорил [Учитель](https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D1%84%D1%83%D1%86%D0%B8%D0%B9): "В древности люди учились для того, чтобы совершенствовать себя. Нынче учатся для того, чтобы удивить других".
## Краткость -- сестра таланта!

View file

@ -1,19 +0,0 @@
Ответ: `5`.
```js
//+ run untrusted
var a = 5;
function a() { }
alert(a);
```
Чтобы понять, почему -- разберём внимательно как работает этот код.
<ol>
<li>До начала выполнения создаётся переменная `a` и функция `a`. Стандарт написан так, что функция создаётся первой и переменная ее не перезаписывает. То есть, функция имеет приоритет. Но в данном случае это совершенно неважно, потому что...
</li>
<li>...После инициализации, когда код начинает выполняться -- срабатывает присваивание `a = 5`, перезаписывая `a`, и уже не важно, что там лежало.</li>
<li>Объявление `Function Declaration` на стадии выполнения игнорируется (уже обработано).</li>
<li>В результате `alert(a)` выводит 5.</li>
</ol>

View file

@ -1,15 +0,0 @@
# Функция и переменная
[importance 3]
Каков будет результат кода? Почему?
```js
var a = 5;
function a() { }
alert(a);
```
P.S. Это задание -- учебное, на понимание процесса инициализации и выполнения. В реальной жизни мы, конечно же, не будем называть переменную и функцию одинаково.