functions
reusable procedures
functions allow us to write reusable, modular code
we define a chunk of code that we can then execute ar a later point
//define
function funcName(){
//
}
scope: the location where a cariable is dedined dictates where we have access to that variable
Lexical scope: nested or an inner function has access to the same stuff as the parent function or grandparent function
function expressions
const add = function (x, y) {
return x + y;
}
add(3,4);
higher order functions
functions that operate on/ with other functions
they can accept other functions as arguments
return a function
function callTwice(func){
func();
func();
}
function laugh() {
console.log("hahahhha");
}
callTwice(laugh)// no () here!!
function makeMysteryFunc(){
const rand =Math.random();
if(rand > 0.5) {
return function() {
console.log("congrats")
}
}
}
defining methods to objects
const myMath = {
PI: 3.1415,
square: function (num) {//or square(num){}
return num * num
},
cube: function(num){
return num **3
}
}
myMath.square(2)//4
this in method
use keyword this to access other properties on the same object
const cat = {
name: 'Blue Steele',
color: 'gray',
breed: 'scottish fold',
meow() {
console.log(`${this.name} says meow`);
}
}
try / catch
try{
HELLO.toUpperCase();
}catch{
console.log("error")
}
try{
}catch(e){
console.log(e);
console.log("")
}