함수 반환(return)
호랑이는 죽어서 가죽을 남기고, 함수는 죽어서 반환값을 남긴다.
object
const obj = { //let 안써도 const로 obj내의 내용물 추가/변경/삭제 가능
key1: value, //property1
key2: value, //property2
}
(번외) in
let user = {name: "이강록", age: 20};
//"key" in object
console.log("name" in user); //true
console.log("height" in user); //false
(번외) === (strict equality)
스터디 시간 막바지에, 노션의 ‘플러스알파’에 해당하는 부분 다루면서 공부했음.
+아래링크참고!!
Equality comparisons and sameness - JavaScript | MDN
⚡ 개념 정리하기 !
콤프 회원 한 명의 정보를 저장하는 변수를 만들려면 어떻게 해야할까요?
입력되는 정보는 이름, 나이, 학과, 그리고 1학년인지의 여부입니다.
boolean, integer, string 을 모두 사용하세요!
object 개념을 활용하세요! (C로 치면 struct나 array, Python으로 치면 dict나 list 등)
const member = {
name: "Kangrok",
age: 20,
major: "Biz",
isFreshman: true
}
1번에서 만든 변수로 여러 사람의 정보를 담으려면 어떻게 해야할까요?
object와 array의 개념을 활용하세요!
Hint❗ 콤프 사람들에게 0부터 15까지 한명씩 번호를 붙인다고 가정해봅시다!
ㄴ 코드를 작성하지 않고 모형도를 그리기만 해도 됩니다!
약간..구조체 배열st…
접근1.
const memArr = [];
memArr.push({name: "이강록", age: 20, isFreshman: true});
memArr.unshift({name: "뽀로로", age: 5, isFreshman: false});
접근2.
코드로 짜지는 않았지만, C언어였으면 일단 struct members의 type을 갖는 배열을 정의하고 시작했겠으나 JS에서는 그럴 수 없으니 1번과 같은 정보를 쭉 모아 배열에 16명의 object를 채워서 만들면 되겠다고 토론했습니다.
2번에서 만든 변수를 반환하는 함수를 작성한다면, 어떻게 작성해볼 수 있을까요?
ㄴ 3번은 정답이 없습니다! 고민하면서 실력이 늘 거에요 ㅎㅎ
사실.. 약간 고민이 되는 부분이었습니다. 반환하기는 해야하는데 return은 한 번 밖에 못쓰니 처음에는 console.log로 어떻게든 해보려고 했습니다. 3조에서 나온 코드를 아래에 한데 모았습니다.
접근1.
function printMembers (passArr) {
const len = passArr.length;
for(i=0;i<len;i++) {
console.log(passArr[i].name);
console.log(passArr[i].age);
console.log(passArr[i].isFreshman);
}
}
printMembers(memArr); //2번에서 정의해둔 배열
접근2.
function printMembers2 (passArr) {
for(key in passArr) {
console.log(key, passArr[key]);
};
}
printMembers2(memArr);
접근3.
const student=[{
name: "J",
age: 20,
},
{
name :"k",
age:21,
}
]
function studentInfo(){
for(i=0;i<student.length;i++){
return [student[i].name, student[i].age];
}
}
⚡ 토론해보아요 !
두 수가 주어졌을 때, 두 값 중 큰 값, 작은 값, 그리고 일치 여부를 각각 반환하려면 어떻게 해야할까요? (단, 하나의 객체 내에서 모두 처리하도록 해요)
Hint❗ 노마드 코더 강의 중 calculator 변수 선언 내용을 참고하세요!
const compareNum = {
bigger: (a,b) => {return (a>b)?a:b},
smaller: (a,b) => {return (a<b)?a:b},
isSame: (a,b) => {return (a===b)}
}
const compareNum2 = {
bigger: function (a, b) {
if(a>b)
return a;
else
return b;
}
smaller: function (a, b) {
if(a<b)
return a;
else
return b;
}
isSame: function (a, b) {
return (a===b);
}
}
값이 두 개가 아니라 세 개가 주어졌다면 어떻게 해결해야 할까요?
ㄴ 이 문제는 웹 개발 보다는 논리적 사고를 중점으로 보는 문제에요!
조원들과 상의해보세요😃
a - b
b - c
c - a
요렇게 비교하면 된다고 토론하였습니다.
const compareNum3 = {
bigger: (a,b,c) => {
if(a>=b && a>=c)
return a;
if(b>=a && b>=c)
return b;
if(c>=a && c>=b)
return c;
},
smaller: (a,b,c) => {
if(a<=b && a<=c)
return a;
if(b<=a && b<=c)
return b;
if(c<=a && c<=b)
return c;
},
isSame: (a,b,c) => {return(a==b && b==c && c==a)}
}
console.log(true==1) //true
console.log(true=="1") //true
console.log(1=="1") //true
JS에서 == 사용시, 형 변환이 일어남에 유의해야한다. 자료형까지 보존하여 비교하고 싶으면 ===을 이용한다.
Why does "1" == 1 return true in Javascript?
스터디시간^^;
//null은 형변환시 0이 된다.
console.log(null>0) //f
console.log(null==0) //f
console.log(null>=0) //t
Mathematically, that’s strange. The last result states that "
null
is greater than or equal to zero", so in one of the comparisons above it must betrue
, but they are both false.
The reason is that an equality check
==
and comparisons> < >= <=
work differently. Comparisons convertnull
to a number, treating it as0
. That’s why (3)null >= 0
is true and (1)null > 0
is false.
On the other hand, the equality check
==
forundefined
andnull
is defined such that, without any conversions, they equal each other and don’t equal anything else. That’s why (2)null == 0
is false.