<script>
var name = prompt("Please enter your name");
console.log(name)
</script>
<script src="my-script.js"></script>
let name = 'Martin';
name = 'Lucas';
const surname = 'Nuc';
let one = 1;
one = one + 5;
// 1) double quotes
let name = "Martin";
// 2) single quotes
let name = 'Martin';
// 3) backticks
let name = `Martin`;
let fullName = `${name} Nuc`;
let name = 'Martin';
console.log(name.toUpperCase());
let characters = name.split('');
console.log(characters); // ['M', 'a', 'r'...]
later...
let a = 5;
if (a === 5) {
console.log('is five');
}
for (let i = 0; i < 10; i++) {
// ...
}
let i = 0;
while(i < 10) {
// ...
i++;
}
function add(a, b) {
return a + b;
}
source: Wes Bos
// 1) named function
function hello() {
console.log('hello');
}
// 2) anonymous function
const hello = function() {
console.log('hello');
}
// 3) using arrow function (also anonymous)
const hello = () => console.log('hello');
named
anonymous
// with body
const one = () => {
return 1;
};
// single returned statement
const two = () => 2;
let thisIsGlobal = 1;
window.something = 2;
console.log(something);
function hello() {
let something = 5;
console.log(something);
}
console.log(something); // error
let name = 'Martin';
if (true) {
let name = 'Lucas';
console.log(name);
}
console.log(name);
let name = 'Martin';
function sayHello() {
console.log(`Hi, ${name}`);
}
function one() {
let name = 'Martin';
function two() {
function three() {
console.log(`Hi, ${name}`);
}
}
}
function() {
// isolated code
console.log('one');
}();
function() {
// isolated code
console.log('two');
}();
Immediately Invoked Function Expression
// ... your code ...
increment();
increment();
increment();
decrement();
print(); // 2
let teacher = {
firstName: 'Martin',
surname: 'Nuc',
age: 32
}
let teacher = {
firstName: 'Martin',
surname: 'Nuc',
age: 32
}
// using dot notation
teacher.age = 33;
// using key name
teacher['age'] = 33;
let keyName = 'age';
teacher[keyName] = 33;
let teacher = {
firstName: 'Martin',
surname: 'Nuc',
age: 32
}
delete teacher.age;
console.log(teacher);
let firstName = 'Martin';
let age = 32;
// create object
let teacher = {
firstName: firstName,
age: age
}
// shorthand:
let teacher = {
firstName,
age
}
let teacher = {
firstName: 'Martin',
age: 32
}
console.log('age' in teacher);
let teacher = {
firstName: 'Martin',
age: 32
}
let teacherTwo = teacher;
teacherTwo.age = 55;
console.log(teacher.age); // ????
const obj = {};
set(obj, 'name', 'Martin');
console.log(obj); // { name: 'Martin' }
set(obj, 'name', 'Lucas');
console.log(obj); // { name: 'Lucas' }
set(obj, 'name', 'George');
console.log(obj); // { name: 'Lucas' }
const obj = {
one: function() { return 1; },
two: () => 2
three() {
return 3;
}
};
obj.four = () => 4;
obj.one();
obj.two();
obj.three();
obj.four();
let obj = {
firstName: 'Martin',
surname: 'Nuc',
age: 32
};
let { name, surname } = obj;
console.log(name, surname);
function printAge({age}) {
console.log(age);
}
printAge({
name: 'Martin',
age: 32
});
typeof 5 // 'number'
typeof 'hi' // 'string'
typeof {} // 'object'
typeof undefined // 'undefined'
typeof null // 'object' !!
let items = [1, 2, 3];
items.push(4);
console.log(items); // [1, 2, 3, 4]
console.log(items.length) // 4
let arr = ['one', 'two', 'three'];
console.log(arr[0]); // 'one'
console.log(arr[1]); // 'two'
console.log(arr[5]); // undefined
let arr = [1, 2, 3, 4];
let output = arr.join('-');
console.log(output); // '1-2-3-4'
let arr = [1, 2, 3, 4];
arr.reverse();
console.log(arr); // [4, 3, 2, 1]
[1, 2, 3, 4].forEach(item =>
console.log(item)
);
let result = [1, 2, 3, 4].every(item =>
item > 0
);
console.log(result); // true
let result = [1, 2, 3, 4].map(item =>
item + 1;
);
console.log(result); // [2, 3, 4, 5]
let result = [1, 2, 3, 4].filter(x => x > 2);
console.log(result); // [3,4]
[1,2,3,4].reduce((accumulator, current) =>
accumulator + current
, 0); // 10
accumulator | current | result |
---|---|---|
0 | 1 | 1 |
1 | 2 | 3 |
3 | 3 | 6 |
6 | 4 | 10 |
'Good morning'.split(' '); // ['Good', 'morning']
let result = 'Good morning'
.replace('morning', 'afternoon');
let result = 'aaa,aab,aac,abc,acc'.match(/aa.?/g);
console.log(result) // [ 'aaa', 'aab', 'aac' ]
class Dog {
bark() {
console.log('woof-woof');
}
}
let rex = new Dog();
rex.bark();
class Dog {
setName(newName) {
this.name = newName;
}
bark() {
console.log('woof-woof, I am ' + this.name);
}
}
let rex = new Dog();
rex.setName('Rex');
let lassie = new Dog();
lassie.setName('Lassie');
rex.bark(); // woof-woof, I am Rex
lassie.bark(); // woof-woof, I am Lassie
class Dog {
constructor(name) {
this.name = name;
}
bark() {
console.log('woof-woof, I am ' + this.name);
}
}
let rex = new Dog('Rex');
rex.bark(); // woof-woof, I am Rex
class Animal {
eat() {
console.log('yum yum');
}
}
class Dog extends Animal {
constructor(name) {
this.name = name;
}
bark() {
console.log('woof-woof, I am ' + this.name);
}
}
let rex = new Dog('Rex');
rex.bark(); // woof-woof, I am Rex
rex.eat(); // yum yum
class BankAccount
constructor(iban) {
this.iban = iban;
this.balance = 0;
}
deposit(amount) {
this.balance = this.balance + amount;
}
withdraw(amount) {
this.balance = this.balance - amount;
}
}
console.log(1);
setTimeout(() => console.log(2), 1000);
setTimeout(() => console.log(3), 2000);
this
class Dog {
constructor(name) {
this.name = name;
}
bark() {
console.log('woof-woof, I am ' + this.name);
}
}
let rex = new Dog('Rex');
rex.bark();
let obj = {
name: 'Martin',
sayHi() {
console.log(this.name);
}
}
obj.sayHi();
let fn = obj.sayHi;
fn();
function fn(num) {
console.log(this, num);
}
// classic invocation
fn(1);
// call + apply
fn.call('test', 2);
fn.apply('test', [3]);
// bind
let bound = fn.bind('test');
bound(4);
$('a').each(function() {
console.log(this.href);
});
let obj = {
name: 'Martin',
hi() {
console.log(this.name);
setTimeout(function () {
console.log(this.name);
}, 1000);
}
}
obj.hi();
let obj = {
name: 'Martin',
hi() {
console.log(this.name);
setTimeout(() => {
console.log(this.name);
}, 1000);
}
}
obj.hi();
obj = {a: 2, b: 3};
for(key in obj) {
console.log(key)
}
<body onload="ready()">
<script>
function ready() {
console.log('page is ready');
}
</script>
</body>
<body>
<script>
window.addEventListener('load', () => {
console.log('page is ready')
});
</script>
</body>
var element = document.querySelector('.my-class');
element.style.backgroundColor = 'red';
element.innerHTML = '<h1>Hello</h1>';
element.style.opacity = 1;
var element = document.querySelector('.outer');
var inner = element.querySelector('.inner');
<div class="outer">
<div class="inner"></div>
</div>
let items = document.querySelectorAll('.item');
console.log(items[0]);
<button type="button" onclick="myScript()">click me</button>
<button id="work" type="button">work</button>
<script>
function myScript() {
console.log('clicked');
}
var element = document.querySelector('#work');
element.addEventListener('click', function() {
console.log('clicked');
});
</script>
var timeoutReference = setTimeout(() => {
console.log('after 3s');
}, 3000);
cancelling timeout
clearTimeout(timeoutReference);
fetch('http://stapi.co/api/v1/rest/season/search?pretty')
.then(response => response.json())
.then(data => console.log(data));
let payload = new URLSearchParams();
payload.set('name', 'Picard');
let fetchOptions = {
method: 'POST',
body: payload,
};
fetch('http://stapi.co/api/v1/rest/character/search', fetchOptions)
.then(response => response.json())
.then(data => console.log(data));
pending
rejected
fullfilled
.then(...)
.catch(...)
function wait5seconds() {
return new Promise((resolve, reject) => {
setTimeout(() => resolve(), 5000);
});
};
wait5seconds().then(() => console.log('after 5s'));
Promise.resolve('hey')
.then(data => console.log(data)) // hey
.then(() => anotherPromise())
.then(() => {
return 'hello';
})
.then(param => console.log(param)); // hello
async function countDown() {
console.log(3);
await wait(1000);
console.log(2);
await wait(1000);
console.log(1);
await wait(1000);
console.log('go!');
}
countDown().then(() => console.log('done'));
async function countDown() {
console.log(3);
await wait(1000);
console.log(2);
await wait(1000);
console.log(1);
await wait(1000);
console.log('go!');
}
countDown().then(() =>
console.log('done'));
function countDown() {
console.log(3);
return wait(1000)
.then(() => console.log(2))
.then(() => wait(1000))
.then(() => console.log(1)
.then(() => wait(1000))
.then(() => console.log('go!'))
}
countDown().then(() =>
console.log('done'));
throw 'message';
// better:
throw new Error('message');
try { ... }
catch (err) { ... }
async function() {
try {
await Promise.reject('this is reason');
} catch (err) {
console.error(err);
}
}
console.log(1);
setTimeout(() => console.log(2), 0);
console.log(3);