Javascript
доступен в браузере. Инструменты разработчика F12
JavaScript vs ECMAScript - почитайте сами
Версии JavaScript. Язык развивается. Разные браузеры знают разные версии и возможности языка.
let x = 10
- это новая конструкция, чтобы ввести переменную,
есть не везде. Переменная вводится как в Java, в текущем блоке.
var x = 10
- поддерживают все, появилось вместе с языком. Вводит переменную на всю функцию.
читать про возможности на сайте MDN (источник) или Can I Use (удобный поиск)
Сейчас принято компилировать новый JS, который не понимают браузеры, в старый. Webpack одна из самых распространенных технологий, чтобы удобно программировать на современном JS.
Мы пишем на старом JS.
Отличия JS от Java
- В программе ни в каком виде не указываются типы.
let x = 10
вместо int x = 10
;
- Отличие в функциях.
function f(a, b, c) {
return a + b * c;
}
вводим функцию, никаких типов.
функции могут быть внутри функций:
function f(a) {
function g(x) {
return a + x;
}
console.log(g(10)); //аналог system.out.println();
}
Вызов f(5)
- напечатает 15.
Функцией можно пользоваться до того места, где она определена. Но функция видна только в блоке, т.е. внутри фигурных скобок. Т.е. функция g не видна вне функции f.
- Функции в JS это объекты первого рода, т.е. их можно хранить в переменных, возвращать из других функций.
let f = function(x) { return x + 1; } // функция безымянна. Но хранится в переменной f
let g = function(x) { return x * 2; }
let h;
if (...)
h = f;
else
h = g;
console.log(h(10)); //11 или 20 в зависимости от условия
function f(a) {
return function(x) {
return a + x;
}
}
let t = f(1); //получили функцию, которая увеличивает аргумент на 1
console.log(t(10)); //11
console.log(t(2)(10)); //12
Задача про летающие шарики
Есть прямоугольник. В нем нарисованы кружки. Кружки летят по прямой, но отражаются от стенок прямоугольника.
let x = 40 let y = 50 let vx = 10 let vy = 15; //скорость по y let r = 7; //радиус const W = 400 const H = 350 //высота и ширина прямоугольника
Эти параметры меняются со временем. Постоянно меняются x и y, периодически меняются vx и vy в моменты отражений.
- сначала нарисуйте прямоугольник и внутри него кружок с указанным радиусом и координатами.
- Добавьте анимацию, пусть кружок едет со скоростью vx по x и vy по y. См. пример с прямоугольником, только там скорости одинаковые, обе SPEED.
- Отражение.
- попробуйте сами создать массив, чтобы шариков стало несколько, а в следующий раз обсудим вместе.
Отражение:
внутри step() проверка. if (x + r > H) vy = -vy
.
Добавьте еще 3 таких проверки для всех сторон прямоугольника.
итого, step - это 4 проверки и сдвиг x. x = x + ??? * vx, где ??? зависит от времени.
Позже мы сделаем формулу чуть лучше, потому что иначе шарики чуть заходят за стороны.