2 Основы JavaScript

Кирилл Кучеров

Основы JavaScript

2

Материалы

learn.javascript.ru

MDN

Краткая история

3

JS

Переменные

НИКОГДА не используйте var. Вообще. Серьезно.
Всегда используйте const, если не получается (пример - цикл for) - let.

Разберем сложный пример

            
function foo(max) {
    for (var i = 0; i < max; i++) {
        setTimeout(function() {console.log(i + 1)}, i * 1000);
    }
}

foo(3);
            
        

Починим

              
function foo(max) {
    for (let i = 0; i < max; i++) {
        setTimeout(function() {console.log(i + 1)}, i * 1000);
    }
}

foo(3);
              
          

Всплытие функций

              
foo();

function foo() {}
              
          

Всплытие переменных

            
console.log(v); // ???
var v = 345;
console.log(v); // ???
            
        

Почему работает

Типы данных

Number

const a = 10;
const b = 5.5;
typeof a === typeof b; // ???
Числа только с плавающей точкой
typeof typeof a; // ???

String

const s1 = 'string';
const s2 = "string";
const s3 = `${a} + ${b} = ${a + b}`;
Нет отдельного типа для одного символа (типа char)
console.log(parseInt('100500'));
console.log(parseFloat('100.500'));
console.log(parseInt('10e5'));
+'199';
+'-1.99';
+'1e4';
Number('1e4');
+'45jjf'; // NaN, parseInt('45jjf') => 45 !!!
+'jjf34'; // NaN
typeof NaN; // ???
parseInt(parseInt); // ???

Boolean

const b1 = true || false;
console.log(!!a);
console.log(!!0);
console.log(!!NaN);
console.log(!!'');
console.log(!!null);
console.log(!!undefined);

null и undefined

5

Объекты

            
const obj = {a: 10, 'b c': 11};
console.log(obj.a);
console.log(obj['b c']);
            
        
            
console.log(obj.foo);

obj.bar = 10;
delete obj.bar;
console.log(obj.bar);

obj.baz = function baz() {console.log('Hello')};
obj.baz();
            
        

Function - first class object

            
function foo() {
    console.log('hello');
}

const bar = foo;
bar();
            
        

Отдохнем?

6

DOM, BOM

7

Программируем

На сладкое - преобразования типов

8
9

WAT?

Спасибо за внимание!