free style
var str = `first line
second line
third line`;
log(str);
var name = prompt("who you think you are?");
log(`Oh, nice to meet you, ${name}!`);
var apples = 3;
var oranges = 4;
log(`I have ${apples + oranges} fruits.`);
var arr = [ "a", "b", "c" ];
arr.lastOne = "z";
//for (let i in arr) {
// console.log(i);
//}
for (let i of arr) {
console.log(i);
}
var domList= document.querySelectorAll("li");
for(let domEl of domList) {
log(domEl.innerHTML);
}
var x = 123,
y = 456;
var obj = {
x,
y,
z: 789
}
log(obj);
var x = 2,
y = 4;
var obj = {
x,
y,
addXtoY(){
return this.x + this.y;
}
}
log(obj.addXtoY());
var obj = {
localName: "",
set name(val){
this.localName= val.toUpperCase();
},
get name(){
return this.localName;
}
}
obj.name = "felipe";
log(obj.name);
var obj = {
ageVal: 0,
set age(val){
if(val < 0){
throw new Error("It's impossible!");
}
this.ageVal= parseInt(val, 10);
},
get age(){
return this.ageVal + " yers old";
}
}
obj.age = 15;
log(obj.age);
obj.age = -2;
function who (name="anonymous", age= 13) {
return `${name} is ${age} years old`;
}
log( who('some child') );
log( who('Felipe', 29) );
log( who(void(0), 18) );
function sayMyName (...names) {
log(names.join(' '));
}
sayMyName('Felipe',
'Nascimento',
'de',
'Moura');
var basket = {
fruits: [],
vegetables: [],
greens: []
}
function add (type, ...items) {
basket[type]= basket[type]?
basket[type].concat(items) :
items;
}
add('fruits', 'apple', 'banana');
add('vegetables', 'carrot', 'potato');
add('greens', 'letuce');
add('fruits', 'lime');
add('meat', 'chicken', 'pork');
log(basket);
function avrgOf3 (a, b, c) {
return (a + b + c) / 3;
}
log( avrgOf3(5, 2, 2) );
var arr = [5, 4, 3];
log( avrgOf3(...arr) );
var func = param => param.split(" ");
func("Felipe Moura");
var func = () => {
log('first line');
log('I received no arguments');
}
func();
let arr = ['a', 'e', 'i', 'o', 'u'];
arr.sort( (a, b)=> a < b? 1: -1 );
( x => x * 2 )( 3 );
var Person = function (name) {
this.id = name;
setTimeout(function () {
log(this.id || "no id!");
}, 1000);
setTimeout(()=>{
log(this.id || "no id!");
}, 2000);
return this;
}
var me = new Person('Felipe');
function *foo() {
yield 1;
yield 2;
return 3;
}
var it = foo(); // it becomes an Iterator
log(it.next());
log(it.next());
log(it.next());
var count = 10;
function * foo(x) {
yield (x || 1) * 3;
}
log(foo().next().value);
log(foo(2).next().value);
log(foo(3).next().value);
var count = 10;
function * foo(x) {
yield (x || 1) * 3;
}
var theFoo = foo();
log(theFoo.next().value);
log(theFoo.next().value); // undefined
function * foo() {
yield 111;
yield 222;
yield 333;
return 444; // will NOT show on for..of
}
for(let val of foo()){
log(val);
}
// this, would create a NEW iterator
// therefore, on its first yield
//log(foo().next().value);
function * counter(){
var i = 0;
while(true)
yield i++;
}
var it = counter();
console.log(it.next().value);
console.log(it.next().value);
console.log(it.next().value);
// a for..of here, would be an endless loop
var goGetThemBoy = (val)=>{
return new Promise((resolve, reject)=>{
setTimeout(()=>{
if(val){
resolve("worked " + val);
}else{
reject(Error("It broke"));
}
}, 1000);
});
}
// try changing this argument to false
goGetThemBoy(true).then((ret)=>{
log('resolved ', ret);
}).catch((err)=>{
log('rejected', err.message);
});
var goGetThemBoy = (val)=>{
return new Promise((resolve, reject)=>{
setTimeout(()=>{
if(val){
resolve(val);
}else{
reject(Error("It broke"));
}
}, 1000);
});
}
// try changing this argument to false
goGetThemBoy(1).then((ret)=>{
log('resolved with ' + ret);
return ret + 1;
}).then((ret)=>{
log('I resolved too: ', ret);
throw(new Error('foo'));
return ret + 1;
}).then((ret)=>{
log('What about me? ', ret);
}).catch((err)=>{
log('rejected', err.message);
});
var goGetThemBoy = (val)=>{
return new Promise((resolve, reject)=>{
setTimeout(()=>{
if(val){
resolve(val);
}else{
reject(Error("It broke"));
}
}, 1000);
});
}
goGetThemBoy(1).then((ret)=>{
log('resolved with ' + ret);
return ret + 1;
}).then((ret)=>{
log('I resolved too: ', ret);
return new Promise((resolve, reject)=>{
setTimeout(()=>{
resolve(9);
}, 1000);
});
}).then((ret)=>{
log('What about me? ', ret);
}).catch((err)=>{
log('rejected', err.message);
});
// race and all
var p1 = new Promise(function(resolve, reject) {
setTimeout(resolve, 3000, 'p1');
});
var p2 = new Promise(function(resolve, reject) {
setTimeout(resolve, 1000, 'p2');
});
var p3 = new Promise(function(resolve, reject) {
setTimeout(resolve, 2000, 'p3');
});
Promise.race([p1, p2, p3]).then((val)=>{
log(val, 'was faster');
});
Promise.all([p1, p2, p3]).then((val)=>{
log(val, 'all finished');
});
class ClassName {
constructor(data){
/* ... */
}
method1(){
/* ... */
}
}
var p = new ClassName({/* ... */});
class Person {
constructor(name, age){
this.name = name;
this.age = age;
}
getName(){
return this.name;
}
}
var p = new Person('Felipe', 29);
log(p);
log(p.getName());
class Being {
constructor (legs= 4, species= 'alien') {
this.legs= legs;
this.species = species;
}
eat () {
log('ate');
}
runAway () {
log('gone!');
}
}
class Human extends Being {
constructor (name) {
this.name = name;
super(2, 'human');
}
eat () {
log('ate, and saved for later');
}
}
var dog= new Being(4, 'canine');
var person= new Human('Felipe');
log(person);
log(person.eat());