javascript ëłľěľ ë° exercise í´ę˛°
ěë°ě¤íŹëŚ˝í¸ ę°ě ěę° (í¨ě)
for (let i = 1; i < 101; i++) {
if (i % 3 === 0 && i % 5 === 0) {
console.log('fizzbuzz');
} else if (i % 3 === 0) {
console.log('fizz');
} else if (i % 5 === 0) {
console.log('buzz');
} else {
console.log(i);
}
}
var x = 10;
var y = 20;
var z = 30;
if (x / y > 1) {
console.log(x);
} else if (y / z > 1) {
console.log(y);
} else if (z / x > 1) {
console.log(z);
}
No.6 function(í¨ě) ě°¸ęł
- íëĄęˇ¸ë¨ě 꾏ěąíë 기본ě ě¸ ëšëŠ ë¸ë
- íëě í¨ěë íëě ěě ë§ íëëĄ ë§ëë ę˛ ě˘ë¤
- í¨ěě ě´ëŚě ëěŹ ííëĄ ě§ě íë ę˛ ě˘ë¤
- ěë°ě¤íŹëŚ˝í¸ěě í¨ěë
object
ě´ë¤
ë°ëźě í¨ě뼟 ë¤ëĽ¸ ëłěě í ëší ěë ěęł , í¨ě뼟 ë¤ëĽ¸ í¨ěě 매ę°ëłěě ě ëŹí ěë ěęł , í¨ě뼟 return í ěë ěë¤
- í¨ě뼟 꾏ěąíë ěě
- input ë°ę¸° : 매ę°ëłě ěě´ë ë¨
- ę¸°ëĽ ěí
- output ë°í : return ëŞ ě ě í´ě¤ë ë¨
í¨ě ě ě¸ě
hoisting
ě´ ëë¤.
ěŚ, í¨ě뼟 ě ěí기ë ě ě í¨ě뼟 í¸ěśí ě ěë¤.
foo(); function foo () { // ě´ ě¤ěě fooë í¨ě ě´ëŚ //function body... }
í¨ě ííě
í¨ě뼟 ëłěě í ëší ë¤ě
ěěź ëłě뼟 í¨ě í¸ěśíëŻ ěěąí´ í¨ě뼟 í¸ěśí ě ěë¤.
const foo = function () { // ě´ ě¤ěě fooë ëłě ě´ëŚ //function body... } foo();
í¨ě ëŻě´ëł´ę¸° â
// í¨ě ě ě¸ function foo (a) { // function body... } // í¨ě ě¤í - í¨ě í¸ěś, í¨ě ë´ëś ě˝ë ě¤í foo(1);
function
= ě´ę˛ě´ í¨ěěě ëíë´ěŁźë í¤ěëfoo
= í¨ě ě´ëŚ{ }
= ě˝ë ë¸ëa
= 매ę°ëłěfunction body...
= í¨ě ë´ëś ě˝ë, 기ëĽ, 꾏í ëĄě§1
= ě¸ě
đĄ í¨ěě ě´ëŚě í¨ě뼟 ę°ëŚŹí¤ęł ěë 죟ě(ref)뼟 ę°ě§ęł ěë¤.
đĄ í¨ě뼟 í¸ěśí기 ěí´ěë í¨ě ě¤í돸ě ( ) ěě íěí ë°ě´í°(ě¸ě)뼟 ě ëŹí´ěŁźëŠ´ ëë¤.
â í¨ě뼟 ě ě¸(ě ě)íęł í¸ěś(ě¤í)íě§ ěěźëŠ´ í¨ěë ěëŹ´ë° ę¸°ëĽë ěííě§ ěëë¤ â
ěě íě
매ę°ëłě
ěě íě
ë°ě´í°ë ëŠëŞ¨ëŚŹě ę°ě´ ꡸ëëĄ ě ěĽë기 ë돸ě 매ę°ëłěě ę°
ě´ ě ëŹë¨
object
매ę°ëłě
objectë ëŠëŞ¨ëŚŹě referenceę° ě ěĽë기 ë돸ě 매ę°ëłěě reference
ę° ě ëŹë¨
ěë°ě¤íŹëŚ˝í¸ěě í¨ě
ë objectě´ë¤
function changeName(obj) { obj.name = 'coder'; } // ě ëŹë objectě nameě coderëĄ ëłę˛˝íë function const syong = {name: 'syong'}; changeName(syong); console.log(syong); // {name: 'coder'}
기본
매ę°ëłě(default parameters)
매ę°ëłěě ę°ě´ ě ëŹëě§ ěěě ë 기본ěźëĄ ěśë Ľë 매ę°ëłě뼟 ě¤ě í ě ěë¤.
기본 매ę°ëłě ě¤ě ě í 경ě°
function show (message, from) { console.log(`${message} by ${from}`); } show(`hi`); // hi by undefined â from 매ę°ëłěě ę°ě´ ě ëŹëě§ ěě기ě undefinedě´ëźęł ëŹë¤
기본 매ę°ëłě ě¤ě í´ě¤ 경ě°
function show (message, from = 'sorry') { console.log(`${message} by ${from}`); } show(`hi`); // hi by sorry
ë머ě§
매ę°ëłě(rest parameters)
매ę°ëłěę° ë°°ě´ ííëĄ ě ëŹë¨
1ë˛ (ëë¨¸ě§ ë§¤ę°ëłě ě´ěŠ)
function printALL(...args) { for (let m = 0; m < args.length; m++) { console.log(args[m]); } } printALL('my', 'name', 'is', 'syong'); /* my name is syong */
2ë˛ (for of ëŹ¸ë˛ ě´ěŠ)
function printALL(...args) { for (const arg of args) { console.log(arg); } } // argsě 모ë ę°ë¤ě´ ě°¨ëĄëëĄ ě§ě ë ëłě argě ëě ëě´ ěśë Ľëë¤
3ë˛ (ë°°ě´ě í¨ěí ě¸ě´ 'forEach' ě´ěŠ)
function printALL(...args) { args.forEach((arg) => console.log(arg)); } // ë°°ě´ íí¸ěě ěě¸í ë°°ě¸ ę˛!
đ 1ë˛ = 2ë˛ = 3ë˛
매ę°ëłě(parameters)
í¨ě뼟 ě ě¸íęł ë§¤ę°ëłě뼟 ě ě¸íë ę˛ě ꡸ ë§¤ę° ëłěě ę°ě ě í´ěŁźě§ ěëë¤.
ë§¤ę° ëłěě ě íí ę°
ě í¨ě뼟 ě¤ííë ěę°
ě 결ě ëë¤.
ě¸ě(arguments)
ě¤ëłľëë ëśëśë¤ ę°ě´ë°
ë¤ëĽ¸ ëśëś
ě매ę°ëłě
ëĄ ě¤ě íë¤.for (let a = 1; a <= 3; a++) { console.log(a); } for (let b = 1; b <= 5; b++) { console.log(b); } for (let c = 1; c <= 7; c++) { console.log(c); }
ěě ěëë ę˛°ęłźę° ę°ë¤
function repeatLog(count) { for (let a = 1; a <= count; a++) { console.log(a); } } repeatLog(3); // 1 2 3 repeatLog(5); // 1 2 3 4 5 repeatLog(7); // 1 2 3 4 5 6 7
ě´ë í¨ě ě ě¸ěě repeatLog( ) ěě ěë 'count'ę°
매ę°ëłě
ě´ęł , í¨ě ě¤í돸ě repeatLog( ) ěě ěë '3', '5', '7'ě´ě¸ě
ě´ë¤
function write() { console.log('write'); } write(1, 5, 10...); // ěśë Ľę°ě writeëĄ ęł ě
íí¸,
function print(x, y) { console.log(`${x} ${y}`); } print(1, 2); // 1 2
đĄ ěŹę¸°ě ě ęš !
- returně ë°íě ě미뼟 ę°ě§ ëż console.logě˛ëź ěśë Ľíëźë ëŞ ë šě´ë ěëë¤. ë°ëźě console ě°˝ě ěëŹ´ë° ę°ë ě°íě§ ěëë¤.
- return ę°ě í¨ě í¸ěś ě
í¨ěę° ë°ííë ę°
ěźëĄ ë체ëë¤.- ěŚ, returně ëěě íšě ë°ě´í°, ě˝ę˛ ë§í´ 'í¨ěëŞ ()'ě´ ë늰 ě´ëĽź console.log ěě ëŁěźëŠ´ ëšëĄě console ě°˝ě ě°íę˛ ëë¤.
// ěě print() í¨ěę° ě ě¸ëěë¤ęł ę°ě console.log(print());
- returně outputě´ ëśëŞ í기 ë돸ě ëłěě í ëšě´ ę°ëĽíë¤. ꡸ëŹë console.logë ëłěě í ëší ě ěë¤.
function add () { const syong = 'LeeSyong'; return 'Hi,' + syong; } const num3 = add(); // return ę°ě ëłěě í ëšě´ ę°ëĽí¨ // ꡸ëŹë const num3 = console.log(add()) ëśę°ëĽ console.log(num3); // Hi, LeeSyong
í¨ě ě˘ ëŁ
꡸ ěŚě return ęľŹëŹ¸ě´ ěí´ ěë í´ëš í¨ě뼟 ě˘
ëŁíë¤.
ěŚ, return;
ëł´ë¤ ěëě ěë ě˝ëë ě¤íëě§ ěëë¤.
ę° ë°í
var a = 1; console.log(a); // 1
ěě ěëë ěŹě¤ě ëěźí ě˝ë뼟 ë¤ëĽ¸ ë°ŠěěźëĄ ě´ ę˛ě´ë¤
function getA () { return 1; } // getA () í¨ěě ë°íę° = 1 var a = getA (); // var a = 1; console.log(a); // 1
â ěľě˘ ě ěźëĄ getA () í¨ěě ë°íę° 1ě´ console ě°˝ě ěśë Ľëë¤
undefined
ěśë Ľreturn;
)function foo (a, b) { if (a < b) { console.log(a) return; } } const result1 = foo(10, 20); const result2 = foo(20, 20); console.log(result1); // 10 undefiend console.log(result2); // undefined // â (20 < 20)ě´ falseě´ëŻëĄ console.log(a) ě¤í X // â return;ěźëĄ ě¸í´ undefined ę°ë§ ëě¤ę˛ ëë¤
쥰깴ě ë§ë
return ëë ę°ě ě§ě í´ěŁźě§ ěě 경ě°function very (c, d) { if (c < d) { console.log(c) return c; } } const result3 = very(10, 20); const result4 = very(20, 20); console.log(result3); // 10 10 console.log(result4); // undefined // â (20 < 20)ě´ falseě´ëŻëĄ console.log(c) ě¤í X // â (20 = 20)ěź ëě ë°íę°ě ě§ě ëě´ ěě§ ěě undefined ę°ě´ ëě¤ę˛ ëë¤
ě´ë´ ëë 뚨댏 returně íěŹ í¨ě뼟 ě˘ ëŁíęł , íěí ëĄě§ě ꡸ ë¤ě ěěąíëëĄ íë¤
function upgradeUser(user) { if (user.point <== 10) { return; } // 꾏í ëĄě§... }
í¨ě뼟 ë¤ëĽ¸ ëłěě ëěźíę˛ ë¤ëŁ¨ë
ě¸ě´ë ěźę¸ í¨ě뼟 ę°ěĄë¤ęł íííë¤
ěźę¸ í¨ěë ëłěě í ëší ěë ěęł , ë¤ëĽ¸ í¨ěě 매ę°ëłěëĄ ě ęłľí ěë ěěźëŠ°, í¨ěę° í¨ě뼟 ë°íí ěë ěë¤.
í¨ě뼟 ě ě¸í¨ęłź ëěě ëłěě í ëšíë¤
const print = function () { // ěľëŞ í¨ě console.log(`print`); } print(); // ëłěě í¨ě뼟 í¸ěśíëŻ () í¸ěśíë¤ const printAgain = print; // ě´ëĽź ë¤ě ë¤ëĽ¸ ëłěě í ëšíë¤ printAgain(); // = print();
function add (x, y) { return x + y; } const doSomething = add; // doSomthingě´ë ëłěě add뼟 í ëš
ě¤ëŞ ââ
addëźë í¨ěě ě´ëŚěë ꡸ í¨ěę° ě ěëě´ ěë ęłłě ę°ëŚŹí¤ë
죟ě(ref)
ę° ë¤ě´ ěë¤.
꡸ë°ë° addëźë í¨ěě ě´ëŚě doSomethingě´ë ëłěě í ëšíę˛ ë늴
ëŠëŞ¨ëŚŹě doSomethingě´ë ëłěę° ě°¨ě§íë ęłľę°ě´ ě기ëë°
꡸ ęłľę°ěë addëźë í¨ěě ě´ëŚě ë¤ě´ěë죟ě(ref)
ę° ëłľěŹëě´ ë¤ě´ě¤ę˛ ëë¤.
ěŚ, doSomthingęłź add 모ë ę°ě í¨ě뼟 ę°ëŚŹí¤ę˛ ëë¤.
ë°ëźě,
const resultOne = doSomething(1, 3); console.log(resultOne); // 4 const resultTwo = add(1, 3); console.log(resultTwo); // 4 // resultOneęłź resultTwoë ę°ě ę°ě ę°ě§ě ě ě ěë¤.
function add (num1, num2) { return num1 + num2; } // ěźë¨ add í¨ě ě ěí´ëě
function surprise(operator) { const result = operator(); console.log(result); } surprise(); // error
í¨ě ě¤í돸ěě 매ę°ëłěě¸ operatorě ě´ë¤ ę°(=ě¸ě, ěŹę¸°ěë í¨ě)ë ě ëŹíě§ ěě기 ë돸ě operatorë í¨ěę° ěëëźęł
error
ę° ëŹë¤.
function surprise(operator) { const result = operator(); console.log(result); } surprise(add); // NaN
매ę°ëłěě¸ operatorě addëźë í¨ě뼟 ě ëŹíë¤.
ěŚ, addę° ę°ëŚŹí¤ęł ěë í¨ěě 죟ě(ref)ę° ëłľěŹëě´ surprise í¨ěě 매ę°ëłěě¸ operatorëĄ ě ëŹë ę˛ě´ë¤.
ë°ëźěoperator()ë 곧 add()뼟 ě미íę˛ ëë¤.
꡸ëŹë num1, num2ě ě´ë¤ ë°ě´í°(=ě¸ě, ěŹę¸°ěë ěŤě)ë ě ëŹí´ěŁźě§ ěě기 ë돸ě Not A Numberě ě미íë
NaN
ę°ě´ ëŹë¤.
âť ěľě˘ ě˝ë (í¨ě뼟 ë¤ëĽ¸ í¨ěě 매ę°ëłěëĄ ě ëŹ)
function surprise(operator) { const result = operator(2, 3); console.log(result); } surprise(add); // 5
í¨ěě ě´ëŚě 1)ë¤ëĽ¸ ëłěě í ëšíë 2)ë¤ëĽ¸ í¨ěě 매ę°ëłěëĄ ě ëŹíë ę°ě
í¨ěě ě´ëŚě ě´ëę°ě ě ëŹíë¤ë ę˛ě ꡸ í¨ěě ě´ëŚě´ ę°ëŚŹí¤ęł ěë í¨ěě 죟ě(ref)뼟 ě ëŹíë¤ë ëťě´ë¤.
ě´ëĽź íľí´ě í¨ě뼟 í¸ěśí ě ěę˛ ëë¤.
í¨ě, ę°ě˛´ íěľ
돸ěě´ ëŠěë íěľ