강의 출처 : The Complete Javavscript - Jonas(Udemy)
Section 3 - JavaScript Fundamentals 2
const calcAge2 = function(birthYear){
return 2037 - birthYear;
}
function calcAge2(birthYear){
return 2037 - birthYear;
}
변수에 할당된다는 점 기억할 것!
const calcAge = birthYear => 2037 - birthYeah;
Array 자체가 const로 정의되었어도 안의 item을 수정할 수 있다. mutable datatype.
하지만 array 자체가 바뀔 수는 없음!
const years = new Array(1991, 1984, 2008, 2020);
const friends = ['Michael', 'Steven', 'Peter'];
friends[2] = 'Jay';
friends = ['Bob','Alice']// 허용되지 않음. !!
Object 내의 함수 (const, let 등을 붙히지 않고 변수에 함수를 할당한다.
Method는 function expression을 이용한다. no declaration.
const jonas = {
firstName :'Jonas',
lastName : 'Scemedtmann',
birthYear : 1991,
age : 2037 -1991,
job : 'teacher',
friends : ['Michael', 'Peter', 'Steven'],
hasDriversLicense : true,
calcAge : function(birthYear){
return 2037 - birthYear
}
object 내에서 object를 언급할 때는 this를 사용할 수 있다.
calcAge : function(){
return 2037 - this.birthYear;}
Array도 사실은 object이다.ex) array.push()
push()는 array라는 객체 안에 있는 method
객체의 item에 접근하기 위한 방법 두가지 - dot notation, bracket notation
dot notation으로는 computed property(final property)를 적어야만 value 값을 얻을 수 있다.
bracket notation은 어떠한 정보로든 value 값 얻을 수 있다.
const jonass = {
firstName :'Jonas',
lastName : 'Scemedtmann',
birthYear : 1991,
age : 2037 -1991,}
const interestedIn = prompt('What do you want to know about Jonas? Choose between firstName, lastName, birthYear, and age');
if(jonass[interestedIn]){
console.log(jonass[interestedIn]);
}else {
console.log('Wrong request!')
}
promt 창에 사용자가 직접 firstName, lastName, burthYear, age 중 하나를 입력하면 그에 맞는 value 값을 얻을 수 있다.
이때 만약 jonass.interestedIn 으로 적는다면 computed property 가 아니기 때문에 value값을 얻을 수 없다.
console.log(jonass.calcAge(`1991`));
console.log(jonass['calcAge']('1991'));
bracket notation을 쓸때는 꼭 ''를 붙혀주는 것 잊지 말기!
calcAge : function(){
this.age = 2037 - this.birthYear;
return this.age;
}
continue : 해당 조건에 해당하는 것들은 skip하고 반복문을 이어간다.
break : 해당 조건에 해당하면, 반복문을 종료한다.
for (let i = 0; i <jonas.length; i++){
if(typeof jonas[i] !== 'string'){
continue;
}
console.log(jonas[i], typeof jonas[i]);
}
//string type만 출력된다. string이 아닌 것들은 skip함.
for (let i = 0; i <jonas.length; i++){
if(typeof jonas[i] === 'number'){
break;
}
console.log(jonas[i], typeof jonas[i]);
}
//number 앞에서 멈춤.
let dice = Math.trunc(Math.random() * 6) + 1;
while(dice !==6){
console.log(`You rolled a ${dice}`);
dice = Math.trunc(Math.random() * 6) + 1; // 변수 안지정해주면 계속 while 반복됌
if(dice ===6){
console.log('Loop is about to end...')
}
}
얼마나 반복해야할지 알때는 for loop , 잘 모르겠을 때는 while 이 좋다!
for loop를 포함하는 함수를 이용할 때는 for 밖에서 값을 return 해주자
function calcAverage(arr){
let sum = 0;
for(let i= 0; i <arr.length; i++){
// sum = sum + arr[i];
sum += arr[i];
}
return sum/arr.length;
}