class

若有一個物件需要大量重複被使用時,可以使用class寫法

class Circle {
	constructor(radius) {
		this.radius = radius;
	}
	getArea() {
		return Math.PI * this.radius * radius
	}
}

let C1 = new Circle(5)
let C2 = new Circle(6)
console.log(C1.getArea()) // 78.53981633974483
console.log(C2.getArea()) // 113.09733552923255

Whit is Algorithm? 什麼是演算法

用不同的寫法驗證速度,好的function可以減少時間及空間複雜度

// 1+2+3....+n = sum
function fn1(n) {
  let sum = 0;
  for (let i = 1; i <= n; i++) {
    sum += i;
  }
  return sum;
}
function fn2(n) {
  // 等差級數
  return ((1 + n) * n) / 2;
}

let time1 = window.performance.now();
fn1(10000000);
let time2 = window.performance.now();
const timeDiff1 = (time2 - time1) / 1000;
console.log(`function1加總所花時間${timeDiff1}`);
let time3 = window.performance.now();
fn2(10000000);
let time4 = window.performance.now();
const timeDiff2 = (time4 - time3) / 1000;
console.log(`function2加總所花時間${timeDiff2}`); // function2的計算數度比function1快一倍

Big O Notion

https://dosmanthus.medium.com/algorithm-big-o-notation-演算法的複雜度-762526316643

https://www.desmos.com/calculator?lang=zh-TW

Linear Search