πŸ‘ javascript : 데이터 μ‹€ν–‰ν•˜κΈ°

01. 선언적 ν•¨μˆ˜

선언적 ν•¨μˆ˜λŠ” λ§€κ°œλ³€μˆ˜, return값이 μ—†λŠ” ν•¨μˆ˜ μž…λ‹ˆλ‹€.

{
    function func() {
        document.write("μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.1");
    }
    func();    
}
κ²°κ³Ό ν™•μΈν•˜κΈ° μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.1

선언적 ν•¨μˆ˜

ν•¨μˆ˜μ— document.write()λ₯Ό μž‘μ„±ν•˜κ³  ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•©λ‹ˆλ‹€.

2. 읡λͺ… ν•¨μˆ˜

이름이 μ—†λŠ” ν•¨μˆ˜λ‘œ, ν•¨μˆ˜λ₯Ό μ •μ˜ν•˜λ©΄μ„œ ν•¨μˆ˜ 이름을 μ§€μ •ν•˜μ§€ μ•ŠλŠ” 것을 λ§ν•©λ‹ˆλ‹€. 일반적으둜 ν•¨μˆ˜λ₯Ό μ •μ˜ν•  λ•Œ ν•¨μˆ˜ 이름을 μ§€μ •ν•˜μ—¬ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜κ³  μ‚¬μš©ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ 읡λͺ…ν•¨μˆ˜λŠ” 이름 없이 ν•¨μˆ˜λ₯Ό μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

{
    const func = function(){
        document.write("μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.2");
    }
    func();
}
κ²°κ³Ό ν™•μΈν•˜κΈ° μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.2

읡λͺ… ν•¨μˆ˜

읡λͺ… ν•¨μˆ˜λŠ” λ³€μˆ˜μ— 데이터λ₯Ό μ €μž₯ν•˜κ³ . λ³€μˆ˜ μ΄λ¦„μœΌλ‘œ 호좜 ν•©λ‹ˆλ‹€.

3. λ§€κ°œλ³€μˆ˜ ν•¨μˆ˜

μž…λ ₯값을 λ°›μ•„ 좜λ ₯값을 κ³„μ‚°ν•˜λŠ” ν•¨μˆ˜(function)μ΄μ§€λ§Œ, μΆ”κ°€μ μœΌλ‘œ λ§€κ°œλ³€μˆ˜(parameter)λ₯Ό 가지고 μžˆμ–΄μ„œ 좜λ ₯값을 κ³„μ‚°ν•˜λŠ”λ° 영ν–₯을 쀄 수 μžˆλŠ” ν•¨μˆ˜λ₯Ό λ§ν•©λ‹ˆλ‹€.

{
    function func(str){
        document.write(str);
    }
    func("μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.3");
}
κ²°κ³Ό ν™•μΈν•˜κΈ° μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.3

λ§€κ°œλ³€μˆ˜ ν•¨μˆ˜

λ§€κ°œλ³€μˆ˜ ν•¨μˆ˜λŠ” ν•¨μˆ˜μ—μ„œ λ§€κ°œλ³€μˆ˜λ₯Ό λ°›κ³ . 받은 λ§€κ°œλ³€μˆ˜λ₯Ό ν™œμš©ν•©λ‹ˆλ‹€.

4. 리턴값(κ²°κ³Ό / 끝) ν•¨μˆ˜

μž…λ ₯값을 λ°›μ•„ 좜λ ₯값을 κ³„μ‚°ν•˜λŠ” ν•¨μˆ˜(function)μ΄μ§€λ§Œ, μΆ”κ°€μ μœΌλ‘œ λ§€κ°œλ³€μˆ˜(parameter)λ₯Ό 가지고 μžˆμ–΄μ„œ 좜λ ₯값을 κ³„μ‚°ν•˜λŠ”λ° 영ν–₯을 쀄 수 μžˆλŠ” ν•¨μˆ˜λ₯Ό λ§ν•©λ‹ˆλ‹€.

{
    function func(){
        const str = "ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.4";
        
        return str;
    }
    document.write(func());
}
κ²°κ³Ό ν™•μΈν•˜κΈ° ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.4

리턴값 ν•¨μˆ˜

ν•¨μˆ˜ μ•ˆμ—μ„œ μ„ μ–Έλœ λ³€μˆ˜λ‚˜ λ§€κ°œλ³€μˆ˜λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

05. ν™”μ‚΄ν‘œ ν•¨μˆ˜ : 선언적 ν•¨μˆ˜

선언적 ν˜•νƒœμ˜ ν™”μ‚΄ν‘œ ν•¨μˆ˜λŠ” ν•¨μˆ˜ 이름을 μ§€μ •ν•˜κ³  function ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

{
    func = () => document.write("μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.5"); 
    func();
}
κ²°κ³Ό ν™•μΈν•˜κΈ° ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.5

ν™”μ‚΄ν‘œ ν•¨μˆ˜ : 선언적 ν•¨μˆ˜

ν•¨μˆ˜μ—μ„œ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.5λ₯Ό 좜λ ₯ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

06. ν™”μ‚΄ν‘œ ν•¨μˆ˜ : 읡λͺ… ν•¨μˆ˜

ν•¨μˆ˜ 이름을 μ§€μ •ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λŒ€μ‹ , ν•¨μˆ˜ ν‘œν˜„μ‹κ³Ό λΉ„μŠ·ν•˜κ²Œ λ³€μˆ˜μ— ν• λ‹Ήν•˜μ—¬ μ‚¬μš©ν•©λ‹ˆλ‹€.

{
    const func = () => {
        document.write("μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.6"); 
    }
    func();
}
κ²°κ³Ό ν™•μΈν•˜κΈ° ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.6

ν™”μ‚΄ν‘œ ν•¨μˆ˜ : 읡λͺ… ν•¨μˆ˜

μƒμˆ˜μ— ν•¨μˆ˜μ˜ 값을 μ €μž₯ν•˜κ³ . μƒμˆ˜μ˜ μ΄λ¦„μœΌλ‘œ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•©λ‹ˆλ‹€.

07. ν™”μ‚΄ν‘œ ν•¨μˆ˜ : λ§€κ°œλ³€μˆ˜ ν•¨μˆ˜

ν™”μ‚΄ν‘œ ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜λŠ” ν•¨μˆ˜ μ„ μ–Έμ—μ„œ κ΄„ν˜Έ μ•ˆμ— μ„ μ–Έλ©λ‹ˆλ‹€.

{
    func = (str) => {
        document.write(str); 
    }
    func("μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.7");
}
κ²°κ³Ό ν™•μΈν•˜κΈ° ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.7

ν™”μ‚΄ν‘œ ν•¨μˆ˜ : λ§€κ°œλ³€μˆ˜

ν•¨μˆ˜ 싀행문에닀가 데이터λ₯Ό μ „λ‹¬ν•©λ‹ˆλ‹€. 그리고 ν•¨μˆ˜λŠ” 데이터λ₯Ό λ§€κ°œλ³€μˆ˜λ‘œ λ°›μ•„ μ‹€ν–‰ν•©λ‹ˆλ‹€.

08. ν™”μ‚΄ν‘œ ν•¨μˆ˜ : 리턴값 ν•¨μˆ˜

ν™”μ‚΄ν‘œ ν•¨μˆ˜λŠ” 일반 ν•¨μˆ˜μ™€ λ§ˆμ°¬κ°€μ§€λ‘œ 값을 λ°˜ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

{
    func = () => {
        const str = "μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.8";
        
        return str;
    }
    document.write(func());
}
κ²°κ³Ό ν™•μΈν•˜κΈ° μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.8

ν™”μ‚΄ν‘œ ν•¨μˆ˜ : 리턴값

ν•¨μˆ˜ μ•ˆμ—μ„œ μ„ μ–Έλœ κ°’μ΄λ‚˜ λ§€κ°œλ³€μˆ˜λ₯Ό λ°˜ν™˜ ν•©λ‹ˆλ‹€.

09. ν™”μ‚΄ν‘œ ν•¨μˆ˜ : 읡λͺ… ν•¨μˆ˜ + λ§€κ°œλ³€μˆ˜ + 리턴값

ν™”μ‚΄ν‘œ ν•¨μˆ˜(Arrow Function)λŠ” ES6(ECMAScript 2015)μ—μ„œ μΆ”κ°€λœ ν•¨μˆ˜ ν‘œν˜„μ‹μž…λ‹ˆλ‹€. ν•¨μˆ˜λ₯Ό κ°„λ‹¨ν•˜κ²Œ μ •μ˜ν•  수 있고, μ½”λ“œλ₯Ό 더 κ°„κ²°ν•˜κ³  가독성 μ’‹κ²Œ μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

{
    // ν™”μ‚΄ν‘œ ν•¨μˆ˜λŠ” νƒ€μž…(let, const)을 적어 μ€˜μ•Όν•©λ‹ˆλ‹€.
    const a = () => {
        document.write("μ‹€ν–‰1" + "
"); } a(); const b = () => { document.write("μ‹€ν–‰2" + "
"); } b(); const c = (str1, str2, str3) => { document.write(str1, str2, str3 + "
"); } c("μ‹€ν–‰3", "μ‹€ν–‰4", "μ‹€ν–‰5"); const d = (x, y, z) => { return x+y+z; } document.write(d(1,2,3)) + "
"; }
κ²°κ³Ό ν™•μΈν•˜κΈ° μ‹€ν–‰1
μ‹€ν–‰2
μ‹€ν–‰3, μ‹€ν–‰4, μ‹€ν–‰5
1, 2, 3

ν™”μ‚΄ν‘œ ν•¨μˆ˜ : 읡λͺ… ν•¨μˆ˜ + λ§€κ°œλ³€μˆ˜ + 리턴값

μ„ μ–Έ : ν™”μ‚΄ν‘œ ν•¨μˆ˜μ— 데이터λ₯Ό μ €μž₯ν•˜κ³  호좜 ν•©λ‹ˆλ‹€. λ§€κ°œλ³€μˆ˜ : ν™”μ‚΄ν‘œ ν•¨μˆ˜μ— 값을 μ „λ‹¬ν•˜κ³  그것듀을 μΆœλ €ν•©λ‹ˆλ‹€. 리턴값 : ν™”μ‚΄ν‘œ ν•¨μˆ˜μ—μ„œ 값을 λ°˜ν™˜ ν•©λ‹ˆλ‹€.

10. ν™”μ‚΄ν‘œ ν•¨μˆ˜ : 읡λͺ… ν•¨μˆ˜ + λ§€κ°œλ³€μˆ˜ + 리턴값 + κ΄„ν˜Έ μƒλž΅

ν™”μ‚΄ν‘œ ν•¨μˆ˜(Arrow Function)λŠ” ES6(ECMAScript 2015)μ—μ„œ μΆ”κ°€λœ ν•¨μˆ˜ ν‘œν˜„μ‹μž…λ‹ˆλ‹€. ν•¨μˆ˜λ₯Ό κ°„λ‹¨ν•˜κ²Œ μ •μ˜ν•  수 있고, μ½”λ“œλ₯Ό 더 κ°„κ²°ν•˜κ³  가독성 μ’‹κ²Œ μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

{
    const func = str => {
        return str;
    }
    document.write(func("μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€."));
}
κ²°κ³Ό ν™•μΈν•˜κΈ° μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€

ν™”μ‚΄ν‘œ ν•¨μˆ˜ : 읡λͺ… ν•¨μˆ˜ + λ§€κ°œλ³€μˆ˜ + 리턴값

일반 ν™”μ‚΄ν‘œ ν•¨μˆ˜λ₯Ό μ„ μ–Έν•˜κ³ . λ§€κ°œλ³€μˆ˜μ— κ΄„ν˜Έλ₯Ό μ—†μ• κ³  μ„ μ–Έν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

11. ν™”μ‚΄ν‘œ ν•¨μˆ˜ : 읡λͺ… ν•¨μˆ˜ + λ§€κ°œλ³€μˆ˜ + 리턴값 + κ΄„ν˜Έ μƒλž΅ + 리턴 μƒλž΅

ν™”μ‚΄ν‘œ ν•¨μˆ˜(Arrow Function)λŠ” ES6(ECMAScript 2015)μ—μ„œ μΆ”κ°€λœ ν•¨μˆ˜ ν‘œν˜„μ‹μž…λ‹ˆλ‹€. ν•¨μˆ˜λ₯Ό κ°„λ‹¨ν•˜κ²Œ μ •μ˜ν•  수 있고, μ½”λ“œλ₯Ό 더 κ°„κ²°ν•˜κ³  가독성 μ’‹κ²Œ μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

{
    const func = str => str;

    document.write(func("μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.8") + "
"); }
κ²°κ³Ό ν™•μΈν•˜κΈ° μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.8

ν™”μ‚΄ν‘œ ν•¨μˆ˜ : 읡λͺ… ν•¨μˆ˜ + λ§€κ°œλ³€μˆ˜ + 리턴값 + κ΄„ν˜Έ μƒλž΅ + 리턴 μƒλž΅

ν•¨μˆ˜μ— λ§€κ°œλ³€μˆ˜λ₯Ό μ „λ‹¬ν•˜κ³  λ°˜ν™˜κ°’μœΌλ‘œ 좜λ ₯ν•©λ‹ˆλ‹€. (return값은 μƒλž΅μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.)

12. ν™”μ‚΄ν‘œ ν•¨μˆ˜ : 선언적 ν•¨μˆ˜ + λ§€κ°œλ³€μˆ˜ + 리턴값 + κ΄„ν˜Έ μƒλž΅ + 리턴 μƒλž΅

ν™”μ‚΄ν‘œ ν•¨μˆ˜(Arrow Function)λŠ” ES6(ECMAScript 2015)μ—μ„œ μΆ”κ°€λœ ν•¨μˆ˜ ν‘œν˜„μ‹μž…λ‹ˆλ‹€. ν•¨μˆ˜λ₯Ό κ°„λ‹¨ν•˜κ²Œ μ •μ˜ν•  수 있고, μ½”λ“œλ₯Ό 더 κ°„κ²°ν•˜κ³  가독성 μ’‹κ²Œ μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

{
    // 이 λ°©λ²•μ˜ 단점 : thisλ₯Ό μ‚¬μš© λͺ»ν•©λ‹ˆλ‹€.
    func = str => str;
    
    document.write(func("μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.9") + "
"); }
κ²°κ³Ό ν™•μΈν•˜κΈ° μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.9

ν™”μ‚΄ν‘œ ν•¨μˆ˜ : 읡λͺ… ν•¨μˆ˜ + λ§€κ°œλ³€μˆ˜ + 리턴값 + κ΄„ν˜Έ μƒλž΅ + 리턴 μƒλž΅

ν•¨μˆ˜μ— λ§€κ°œλ³€μˆ˜λ₯Ό μ „λ‹¬ν•˜κ³  λ°˜ν™˜κ°’μœΌλ‘œ 좜λ ₯ν•©λ‹ˆλ‹€. (return값은 μƒλž΅μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.) (μ΄λ ‡κ²Œν•˜λ©΄ thisκ°’μœΌλ‘œ ν”„λ‘œν† νƒ€μž…μ„ 생성할 μˆ˜κ°€ μ—†μŠ΅λ‹ˆλ‹€.)

13. ν•¨μˆ˜ μœ ν˜• : ν•¨μˆ˜μ™€ λ§€κ°œλ³€μˆ˜λ₯Ό μ΄μš©ν•œ ν˜•νƒœ

ν•¨μˆ˜(function)λŠ” ν”„λ‘œκ·Έλž˜λ°μ—μ„œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜κΈ° μœ„ν•œ μ½”λ“œμ˜ λΈ”λ‘μž…λ‹ˆλ‹€. ν•¨μˆ˜λŠ” μž…λ ₯을 λ°›μ•„ μ²˜λ¦¬ν•˜κ³ , κ²°κ³Όλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. 이 λ•Œ ν•¨μˆ˜κ°€ λ°›λŠ” μž…λ ₯을 λ§€κ°œλ³€μˆ˜(parameter)라고 ν•©λ‹ˆλ‹€.

{
    function func(num, str1, str2){
        document.write(num + "." + str1 + "κ°€" + str2 + "λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
"); } func("1", "ν•¨μˆ˜", "μ‹€ν–‰"); func("2", "μžλ°”μŠ€ν¬λ¦½νŠΈ", "μ‹€ν–‰"); func("3", "λ¦¬μ•‘νŠΈ", "μ‹€ν–‰"); }
κ²°κ³Ό ν™•μΈν•˜κΈ° 1.ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
2.μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
3.λ¦¬μ•‘νŠΈκ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

ν•¨μˆ˜ μœ ν˜• : ν•¨μˆ˜μ™€ λ§€κ°œλ³€μˆ˜λ₯Ό μ΄μš©ν•œ ν˜•νƒœ

ν•¨μˆ˜ μ‹€ν–‰λ¬Έμ—μ„œ λ§€κ°œλ³€μˆ˜λ₯Ό μ „λ‹¬ν•˜κ³ . ν•¨μˆ˜μ˜ μ œμ–΄λ¬Έμ—μ„œλŠ” λ§€κ°œλ³€μˆ˜λ₯Ό λ°›μ•„μ„œ 좜λ ₯을 ν•΄μ€λ‹ˆλ‹€.

14. ν•¨μˆ˜ μœ ν˜• : ν•¨μˆ˜μ™€ λ³€μˆ˜λ₯Ό μ΄μš©ν•œ ν˜•νƒœ

ν•¨μˆ˜λŠ” 일련의 μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” μ½”λ“œ λΈ”λ‘μž…λ‹ˆλ‹€. ν•¨μˆ˜λŠ” μž…λ ₯을 받아듀이고 좜λ ₯을 λ°˜ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν•¨μˆ˜λŠ” 쀑볡 μ½”λ“œλ₯Ό ν”Όν•˜κ³  μ½”λ“œμ˜ 가독성과 μœ μ§€ λ³΄μˆ˜μ„±μ„ ν–₯μƒμ‹œν‚€λŠ” 데 도움이 λ©λ‹ˆλ‹€. ν•¨μˆ˜λŠ” ν”„λ‘œκ·Έλž¨μ˜ κΈ°λŠ₯을 λͺ¨λ“ˆν™”ν•˜κ³  μž¬μ‚¬μš© κ°€λŠ₯ν•œ μ½”λ“œ 쑰각으둜 λΆ„ν• ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

{
    function func(num, str1, str2){
        document.write(num + "." + str1 + "κ°€" + str2 + "λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
"); } const youNum1 = 1; const youNum2 = 2; const youNum3 = 3; const youStr1 = "ν•¨μˆ˜"; const youStr2 = "μžλ°”μŠ€ν¬λ¦½νŠΈ"; const youStr3 = "λ¦¬μ•‘νŠΈ"; const youCom1 = "μ‹€ν–‰"; func(youNum1, youStr1, youCom1); func(youNum2, youStr2, youCom1); func(youNum3, youStr3, youCom1); }
κ²°κ³Ό ν™•μΈν•˜κΈ° 1.ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
2.μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
3.λ¦¬μ•‘νŠΈκ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

ν•¨μˆ˜ μœ ν˜• : ν•¨μˆ˜μ™€ λ³€μˆ˜λ₯Ό μ΄μš©ν•œ ν˜•νƒœ

λ³€μˆ˜μ— 데이터λ₯Ό μ €μž₯ν•˜κ³ . ν•¨μˆ˜μ— λ§€κ°œλ³€μˆ˜λ‘œ 데이터λ₯Ό μ „λ‹¬ν•©λ‹ˆλ‹€.

15. ν•¨μˆ˜ μœ ν˜• : ν•¨μˆ˜μ™€ 배열을 μ΄μš©ν•œ ν˜•νƒœ

ν•¨μˆ˜λŠ” 일련의 μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” μ½”λ“œ λΈ”λ‘μž…λ‹ˆλ‹€. ν•¨μˆ˜λŠ” μž…λ ₯을 받아듀이고 좜λ ₯을 λ°˜ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν•¨μˆ˜λŠ” 쀑볡 μ½”λ“œλ₯Ό ν”Όν•˜κ³  μ½”λ“œμ˜ 가독성과 μœ μ§€ λ³΄μˆ˜μ„±μ„ ν–₯μƒμ‹œν‚€λŠ” 데 도움이 λ©λ‹ˆλ‹€. ν•¨μˆ˜λŠ” ν”„λ‘œκ·Έλž¨μ˜ κΈ°λŠ₯을 λͺ¨λ“ˆν™”ν•˜κ³  μž¬μ‚¬μš© κ°€λŠ₯ν•œ μ½”λ“œ 쑰각으둜 λΆ„ν• ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

{
    function func(num, str1, str2){
        document.write(num + "." + str1 + "κ°€" + str2 + "λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
"); } const num = [1,2,3]; const info = ["ν•¨μˆ˜","μžλ°”μŠ€ν¬λ¦½νŠΈ","λ¦¬μ•‘νŠΈ","μ‹€ν–‰"]; func(num[0], info[0], info[3]); func(num[1], info[1], info[3]); func(num[2], info[2], info[3]); }
κ²°κ³Ό ν™•μΈν•˜κΈ° 1.ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
2.μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
3.λ¦¬μ•‘νŠΈκ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

ν•¨μˆ˜ μœ ν˜• : ν•¨μˆ˜μ™€ 배열을 μ΄μš©ν•œ ν˜•νƒœ

배열에 데이터λ₯Ό μ €μž₯ν•˜κ³ . λ°μ΄ν„°μ˜ 인덱슀 번호둜 데이터λ₯Ό ν˜ΈμΆœν•˜κ³  ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜λ‘œ μ „λ‹¬ν•©λ‹ˆλ‹€.]

16. ν•¨μˆ˜ μœ ν˜• : ν•¨μˆ˜μ™€ λ°°μ—΄, 객체λ₯Ό μ΄μš©ν•œ ν˜•νƒœ

ν•¨μˆ˜λŠ” 일련의 μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” μ½”λ“œ λΈ”λ‘μž…λ‹ˆλ‹€. ν•¨μˆ˜λŠ” μž…λ ₯을 받아듀이고 좜λ ₯을 λ°˜ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν•¨μˆ˜λŠ” 쀑볡 μ½”λ“œλ₯Ό ν”Όν•˜κ³  μ½”λ“œμ˜ 가독성과 μœ μ§€ λ³΄μˆ˜μ„±μ„ ν–₯μƒμ‹œν‚€λŠ” 데 도움이 λ©λ‹ˆλ‹€. ν•¨μˆ˜λŠ” ν”„λ‘œκ·Έλž¨μ˜ κΈ°λŠ₯을 λͺ¨λ“ˆν™”ν•˜κ³  μž¬μ‚¬μš© κ°€λŠ₯ν•œ μ½”λ“œ 쑰각으둜 λΆ„ν• ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

{
    function func(num, str1, str2){
        document.write(num + "." + str1 + "κ°€" + str2 + "λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
"); } const info = [ { num1: 1, name: "ν•¨μˆ˜", word: "μ‹€ν–‰" }, { num2: 2, name: "μžλ°”μŠ€ν¬λ¦½νŠΈ", word: "μ‹€ν–‰" }, { num3: 3, name: "λ¦¬μ•‘νŠΈ", word: "μ‹€ν–‰" } ]; func(info[0].num1, info[0].name, info[0].word); func(info[1].num2, info[1].name, info[1].word); func(info[2].num3, info[2].name, info[2].word); }
κ²°κ³Ό ν™•μΈν•˜κΈ° 1.ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
2.μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
3.λ¦¬μ•‘νŠΈκ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

ν•¨μˆ˜ μœ ν˜• : ν•¨μˆ˜μ™€ λ°°μ—΄, 객체λ₯Ό μ΄μš©ν•œ ν˜•νƒœ

λ°°μ—΄ μ•ˆμ— 각각 객체λ₯Ό μƒμ„±ν•˜κ³  킀와 데이터λ₯Ό μ €μž₯ν•©λ‹ˆλ‹€. 그리고 λ°°μ—΄ μ•ˆμ— μ €μž₯된 객체에 μ ‘κ·Όν•˜μ—¬ ν•¨μˆ˜μ— λ§€κ°œλ³€μˆ˜λ‘œ μ „λ‹¬ν•˜κ³  μ‹€ν–‰ν•©λ‹ˆλ‹€.

17. ν•¨μˆ˜ μœ ν˜• : 객체생성 ν•¨μˆ˜λ₯Ό μ΄μš©ν•œ ν˜•νƒœ

객체 μ•ˆμ— ν•¨μˆ˜λ₯Ό μ •μ˜ν•˜λ €λ©΄ 객체의 μ†μ„±μœΌλ‘œ ν•¨μˆ˜λ₯Ό ν• λ‹Ήν•˜λ©΄ λ©λ‹ˆλ‹€. μ΄λŸ¬ν•œ λ°©μ‹μœΌλ‘œ ν•¨μˆ˜λ₯Ό μ •μ˜ν•˜λ©΄, 객체λ₯Ό μΈμŠ€ν„΄μŠ€ν™”ν•  λ•Œλ§ˆλ‹€ ν•΄λ‹Ή ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

{
    function func(num, name, word){
        // λ³€μˆ˜λ₯Ό 일일이 μƒμ„±ν•˜λ©΄ λΆˆνŽΈν•˜λ‹ˆκ°„ this둜 생성함
        this.num = num;
        this.name = name;
        this.word = word;

        this.result = function(){
            document.write(this.num + "." + this.name + "κ°€" + this.word + "λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
"); } } // μΈμŠ€ν„΄μŠ€ 생성 let infor1 = new func(1, "ν•¨μˆ˜", "μ‹€ν–‰"); let infor2 = new func(2, "μžλ°”μŠ€ν¬λ¦½νŠΈ", "μ‹€ν–‰"); let infor3 = new func(3, "λ¦¬μ•‘νŠΈ", "μ‹€ν–‰"); infor1.result(); infor2.result(); infor3.result(); }
κ²°κ³Ό ν™•μΈν•˜κΈ° 1.ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
2.μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
3.λ¦¬μ•‘νŠΈκ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

ν•¨μˆ˜ μœ ν˜• : 객체생성 ν•¨μˆ˜λ₯Ό μ΄μš©ν•œ ν˜•νƒœ

객체λ₯Ό μƒμ„±ν•˜μ—¬ λ§€κ°œλ³€μˆ˜λ‘œ 데이터λ₯Ό μ „λ‹¬ν•˜κ³ . λ³€μˆ˜μ— μ €μž₯ ν•©λ‹ˆλ‹€. 그리고 λ³€μˆ˜μ— μ €μž₯된 κ°’ 쀑 function() ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.

18. ν•¨μˆ˜ μœ ν˜• : ν”„λ‘œν† νƒ€μž… ν•¨μˆ˜

JavaScriptμ—μ„œ λͺ¨λ“  κ°μ²΄λŠ” μžμ‹ μ˜ ν”„λ‘œν† νƒ€μž…(Prototype)이라고 λΆˆλ¦¬λŠ” λ‹€λ₯Έ 객체λ₯Ό μ°Έμ‘°ν•©λ‹ˆλ‹€. ν”„λ‘œν† νƒ€μž…μ€ 상속을 κ΅¬ν˜„ν•˜λŠ” 데 μ‚¬μš©λ˜λ©°, ν”„λ‘œν† νƒ€μž… 체인(Prototype chain)을 톡해 객체 κ°„μ˜ 관계λ₯Ό ν˜•μ„±ν•©λ‹ˆλ‹€.

{
    function Func(num, name, word){
        this.num = num;
        this.name = name;
        this.word = word;
    };

    Func.prototype.result = function(){
        document.write("ν”„λ‘œν† νƒ€μž… ν•¨μˆ˜");
        document.write(this.num + "." + this.name + "κ°€" + this.word + "λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
"); } // μΈμŠ€ν„΄μŠ€ 생성 let infor1 = new Func(1, "ν•¨μˆ˜", "μ‹€ν–‰"); let infor2 = new Func(2, "μžλ°”μŠ€ν¬λ¦½νŠΈ", "μ‹€ν–‰"); let infor3 = new Func(3, "λ¦¬μ•‘νŠΈ", "μ‹€ν–‰"); infor1.result(); infor2.result(); infor3.result(); }
κ²°κ³Ό ν™•μΈν•˜κΈ° 1.ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
2.μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
3.λ¦¬μ•‘νŠΈκ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

ν•¨μˆ˜ μœ ν˜• : ν”„λ‘œν† νƒ€μž… ν•¨μˆ˜

객체 μ•ˆμ—μ„œ λ³€μˆ˜λ₯Ό μƒμ„±ν•΄μ„œ λ§€κ°œλ³€μˆ˜λ₯Ό μ €μž₯ν• λ•Œ μ‹œκ°„μ΄ λ“€κ³  힘이 λ“­λ‹ˆλ‹€. κ·ΈλŸ΄λ–„ "this.이름 = λ§€κ°œλ³€μˆ˜"둜 μž‘μ„±μ„ ν•΄μ£Όλ©΄ μˆ˜μ›”ν•˜κ²Œ 데이터λ₯Ό μ €μž₯ν•˜κ³  전달 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

(볡슡) ν•¨μˆ˜ μœ ν˜•(μ‹€ν–‰λ¬Έ, κ°„νŽΈν™”, κ·Έλ£Ήν™”) : ν•¨μˆ˜μ™€ λ§€κ°œλ³€μˆ˜λ₯Ό μ΄μš©ν•œ ν˜•νƒœ

ν•¨μˆ˜λŠ” μž…λ ₯값을 λ°›μ•„ 좜λ ₯값을 λ°˜ν™˜ν•˜λŠ” κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ” μ½”λ“œ λΈ”λ‘μž…λ‹ˆλ‹€. 일반적으둜 ν•¨μˆ˜λŠ” λ‹€μŒκ³Ό 같은 ν˜•νƒœλ₯Ό κ°€μ§‘λ‹ˆλ‹€.

  {
    function func(num, str1, str2){
        document.write(`${num}. ${str1}κ°€ ${str2}λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
`); } func("1", "ν•¨μˆ˜", "μ‹€ν–‰"); func("2", "μžλ°”μŠ€ν¬λ¦½νŠΈ", "μ‹€ν–‰"); func("3", "λ¦¬μ•‘νŠΈ", "μ‹€ν–‰") }
κ²°κ³Ό ν™•μΈν•˜κΈ° 1.ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
2.μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
3.λ¦¬μ•‘νŠΈκ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

(볡슡1) ν•¨μˆ˜ μœ ν˜•(μ‹€ν–‰λ¬Έ, κ°„νŽΈν™”, κ·Έλ£Ήν™”) : ν•¨μˆ˜μ™€ λ§€κ°œλ³€μˆ˜λ₯Ό μ΄μš©ν•œ ν˜•νƒœ

ν•¨μˆ˜λ₯Ό μƒμ„±ν•˜κ³  λ§€κ°œλ³€μˆ˜λ₯Ό 3개 λ°›μŠ΅λ‹ˆλ‹€. 그리고 ν•¨μˆ˜μ˜ 싀행문을 μƒμ„±ν•˜κ³  데이터λ₯Ό μ „λ‹¬ν•˜κ³  좜λ ₯ν•©λ‹ˆλ‹€.

(볡슡2) ν•¨μˆ˜ μœ ν˜• : ν•¨μˆ˜μ™€ λ³€μˆ˜λ₯Ό μ΄μš©ν•œ ν˜•νƒœ

ν•¨μˆ˜μ™€ λ³€μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ λ‹€μ–‘ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν•¨μˆ˜ μ•ˆμ—μ„œ λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜κ³  이λ₯Ό ν™œμš©ν•˜μ—¬ ν•¨μˆ˜κ°€ μˆ˜ν–‰ν•˜λŠ” μž‘μ—…μ„ κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  {
    const youNum1 = 1;
    const youNum2 = 2;
    const youNum3 = 3;
    const youStr1 = "ν•¨μˆ˜";
    const youStr2 = "μžλ°”μŠ€ν¬λ¦½νŠΈ";
    const youStr3 = "λ¦¬μ•‘νŠΈ";
    const youCom1 = "μ‹€ν–‰";

    function func(num, str1, str2){
        document.write(`${num}. ${str1}κ°€ ${str2}λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
`); } func(youNum1, youStr1, youCom1); func(youNum2, youStr2, youCom1); func(youNum3, youStr3, youCom1); }
κ²°κ³Ό ν™•μΈν•˜κΈ° 1.ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
2.μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
3.λ¦¬μ•‘νŠΈκ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

(볡슡2) ν•¨μˆ˜ μœ ν˜• : ν•¨μˆ˜μ™€ λ³€μˆ˜λ₯Ό μ΄μš©ν•œ ν˜•νƒœ

μƒμˆ˜λ₯Ό μ„ μ–Έν•˜κ³  데이터λ₯Ό μ €μž₯ν•©λ‹ˆλ‹€. 그리고 ν•¨μˆ˜λ‘œ λ§€κ°œλ³€μˆ˜λ₯Ό 3개λ₯Ό λ°›μŠ΅λ‹ˆλ‹€. ν•¨μˆ˜μ˜ μ‹€ν–‰λ¬ΈμœΌλ‘œ μƒμˆ˜κ°’μ„ λ§€κ°œλ³€μˆ˜λ‘œ μ „λ‹¬ν•˜κ³  좜λ ₯ν•©λ‹ˆλ‹€.

(볡슡3) ν•¨μˆ˜ μœ ν˜• : ν•¨μˆ˜μ™€ λ°°μ—΄, 객체λ₯Ό μ΄μš©ν•œ ν˜•νƒœ

ν•¨μˆ˜μ™€ λ°°μ—΄, 객체λ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜μ—¬ λ‹€μ–‘ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ°°μ—΄μ΄λ‚˜ 객체λ₯Ό ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜λ‘œ μ „λ‹¬ν•˜κ³ , ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ 이λ₯Ό ν™œμš©ν•˜μ—¬ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  {
    const info = [
        {
            num: "1",
            name: "ν•¨μˆ˜",
            com: "μ‹€ν–‰"
        },{
            num: "2",
            name: "μžλ°”μŠ€ν¬λ¦½νŠΈ",
            com: "μ‹€ν–‰"
        },{
            num: "3",
            name: "λ¦¬μ•‘νŠΈ",
            com: "μ‹€ν–‰"
        },              
    ];

    function func(num, str1, str2){
        document.write(`${num}. ${str1}κ°€ ${str2}λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
`); } func(info[0].num, info[0].name, info[0].com); func(info[1].num, info[1].name, info[1].com); func(info[2].num, info[2].name, info[2].com); }
κ²°κ³Ό ν™•μΈν•˜κΈ° 1.ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
2.μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
3.λ¦¬μ•‘νŠΈκ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

(볡슡3) ν•¨μˆ˜ μœ ν˜• : ν•¨μˆ˜μ™€ λ°°μ—΄, 객체λ₯Ό μ΄μš©ν•œ ν˜•νƒœ

배열을 μƒμ„±ν•©λ‹ˆλ‹€. 그리고 λ°°μ—΄ μ•ˆμ— 객체λ₯Ό 3개 λ§Œλ“­λ‹ˆλ‹€. ν•¨μˆ˜λ₯Ό μƒμ„±ν•˜κ³  λ§€κ°œλ³€μˆ˜λ₯Ό 3개 λ°›μŠ΅λ‹ˆλ‹€. ν•¨μˆ˜μ˜ μ‹€ν–‰λ¬ΈμœΌλ‘œ λ°°μ—΄ μ•ˆμ— μ €μž₯된 값듀을 λ§€κ°œλ³€μˆ˜λ‘œ μ „λ‹¬ν•©λ‹ˆλ‹€.

(볡슡4) ν•¨μˆ˜ μœ ν˜• : 객체 μ•ˆμ— ν•¨μˆ˜λ₯Ό 넣은 ν˜•νƒœ(λ³€μˆ˜κ°’μ΄ λ„ˆλ¬΄ λ§Žμ•„μ§)

객체 μ•ˆμ— ν•¨μˆ˜λ₯Ό λ„£λŠ” 것을 객체 λ‚΄μ˜ λ©”μ„œλ“œ(method)λ₯Ό μ •μ˜ν•˜λŠ” 것이라고 ν•©λ‹ˆλ‹€. 객체 λ‚΄μ˜ λ©”μ„œλ“œλŠ” ν•΄λ‹Ή 객체의 속성에 μ ‘κ·Όν•˜μ—¬ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

{
    const info = {
        num1: "1",
        name1: "ν•¨μˆ˜",
        com1: "μ‹€ν–‰",
        num2: "2",
        name2: "ν•¨μˆ˜",
        com2: "μ‹€ν–‰",
        num3: "3",
        name3: "ν•¨μˆ˜",
        com3: "μ‹€ν–‰",
        result1: () => {
            document.write(`${info.num1}. ${info.name1}κ°€ ${info.com1}λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
`) }, result2: () => { document.write(`${info.num2}. ${info.name2}κ°€ ${info.com2}λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
`) }, result3: () => { document.write(`${info.num3}. ${info.name3}κ°€ ${info.com3}λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
`) } } info.result1(); info.result2(); info.result3(); }
κ²°κ³Ό ν™•μΈν•˜κΈ° 1.ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
2.μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
3.λ¦¬μ•‘νŠΈκ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

(볡슡4) ν•¨μˆ˜ μœ ν˜• : 객체 μ•ˆμ— ν•¨μˆ˜λ₯Ό 넣은 ν˜•νƒœ(λ³€μˆ˜κ°’μ΄ λ„ˆλ¬΄ λ§Žμ•„μ§)

μƒμˆ˜ μ•ˆμ—λ‹€κ°€ 객체λ₯Ό μƒμ„±ν•˜κ³  μ•ˆμ— λ³€μˆ˜μ™€ ν•¨μˆ˜λ₯Ό μ €μž₯ν•©λ‹ˆλ‹€. 그리고 μƒμˆ˜μ•ˆμ— μ €μž₯된 객체λ₯Ό λΆˆλŸ¬μ™€μ„œ 좜λ ₯ν•©λ‹ˆλ‹€.

19. ν•¨μˆ˜ μœ ν˜• : 객체 μƒμ„±μž ν•¨μˆ˜

객체 μƒμ„±μž ν•¨μˆ˜λŠ” 객체λ₯Ό μƒμ„±ν•˜κ³  μ΄ˆκΈ°ν™”ν•˜λŠ” ν•¨μˆ˜λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. 객체 μƒμ„±μž ν•¨μˆ˜λŠ” 클래슀λ₯Ό μ •μ˜ν•˜μ§€ μ•Šκ³ λ„ 객체λ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.

{
    function func(num, name, com){
        this.num = num;
        this.name = name;
        this.com = com;
        this.result = function(){
            document.write(`${this.num}. ${this.name}κ°€ ${this.com}λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
`); } } // μΈμŠ€ν„΄μŠ€ const info1 = new func("100", "ν•¨μˆ˜", "μ‹€ν–‰"); const info2 = new func("200", "μžλ°”μŠ€ν¬λ¦½νŠΈ", "μ‹€ν–‰"); const info3 = new func("300", "λ¦¬μ•‘νŠΈ", "μ‹€ν–‰"); // μ‹€ν–‰λ¬Έ info1.result(); info2.result(); info3.result(); }
κ²°κ³Ό ν™•μΈν•˜κΈ° 100.ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
200.μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
300.λ¦¬μ•‘νŠΈκ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

19. ν•¨μˆ˜ μœ ν˜• : 객체 μƒμ„±μž ν•¨μˆ˜

ν•¨μˆ˜λ₯Ό μƒμ„±ν•˜κ³  λ§€κ°œλ³€μˆ˜λ₯Ό 3개 λ°›μŠ΅λ‹ˆλ‹€. ν•¨μˆ˜ μ•ˆμ—λŠ” λ³€μˆ˜ 3κ°œμ™€ ν•¨μˆ˜λ₯Ό μ„ μ–Έν–ˆμŠ΅λ‹ˆλ‹€. 그리고 객체 생성을 톡해 ν•¨μˆ˜μ— λ§€κ°œλ³€μˆ˜λ₯Ό μ „λ‹¬ν•˜κ³ . ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•΄μ„œ 좜λ ₯ν•©λ‹ˆλ‹€.

20. ν•¨μˆ˜ μœ ν˜• : ν”„λ‘œν† νƒ€μž… ν•¨μˆ˜

ν”„λ‘œν† νƒ€μž… ν•¨μˆ˜(prototype function)λŠ” JavaScriptμ—μ„œ 객체 μƒμ„±μž ν•¨μˆ˜λ‘œλΆ€ν„° μƒμ„±λœ 객체의 λ©”μ„œλ“œλ₯Ό μ •μ˜ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€. ν”„λ‘œν† νƒ€μž… ν•¨μˆ˜λŠ” μƒμ„±λœ 객체듀 μ‚¬μ΄μ—μ„œ κ³΅μœ λ˜λŠ” ν•¨μˆ˜λ‘œμ„œ λ©”λͺ¨λ¦¬ μ‚¬μš©μ„ 효율적으둜 ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€.

{
    function func(num, name, com){
        this.num = num;
        this.name = name;
        this.com = com;
    };
    // prototype은 ν•¨μˆ˜ λ°–μ—μ„œ μ‚¬μš© 해야함
    func.prototype.result = function(){
        document.write(`${this.num}. ${this.name}κ°€ ${this.com}λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
`); } // μΈμŠ€ν„΄μŠ€ const info1 = new func("100", "ν•¨μˆ˜", "μ‹€ν–‰"); const info2 = new func("200", "μžλ°”μŠ€ν¬λ¦½νŠΈ", "μ‹€ν–‰"); const info3 = new func("300", "λ¦¬μ•‘νŠΈ", "μ‹€ν–‰"); // μ‹€ν–‰λ¬Έ info1.result(); info2.result(); info3.result(); }
κ²°κ³Ό ν™•μΈν•˜κΈ° 100.ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
200.μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
300.λ¦¬μ•‘νŠΈκ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

20. ν•¨μˆ˜ μœ ν˜• : ν”„λ‘œν† νƒ€μž… ν•¨μˆ˜

21. ν•¨μˆ˜ μœ ν˜• : κ°μ²΄λ¦¬ν„°λŸ΄ ν•¨μˆ˜

객체 λ¦¬ν„°λŸ΄ ν•¨μˆ˜(object literal function)λŠ” JavaScriptμ—μ„œ 객체λ₯Ό μƒμ„±ν•˜λŠ” ν•¨μˆ˜λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. 객체 λ¦¬ν„°λŸ΄ ν•¨μˆ˜λŠ” 객체λ₯Ό μƒμ„±ν•˜κ³  μ΄ˆκΈ°ν™”ν•  λ•Œ μ‚¬μš©λ˜λ©°, κ°„λ‹¨ν•˜κ³  직관적인 λ°©λ²•μœΌλ‘œ 객체λ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.

{
    function func(num, name, com){
        this.num = num;
        this.name = name;
        this.com = com;
    }
    func.prototype = {
        result1: function(){
            document.write(`${this.num}. ${this.name}κ°€ ${this.com}λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
`); }, result2: function(){ document.write(`${this.num}. ${this.name}κ°€ ${this.com}λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
`); }, result3: function(){ document.write(`${this.num}. ${this.name}κ°€ ${this.com}λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
`); } }; // μΈμŠ€ν„΄μŠ€ const info1 = new func("102", "ν•¨μˆ˜", "μ‹€ν–‰"); const info2 = new func("202", "μžλ°”μŠ€ν¬λ¦½νŠΈ", "μ‹€ν–‰"); const info3 = new func("302", "λ¦¬μ•‘νŠΈ", "μ‹€ν–‰"); // μ‹€ν–‰λ¬Έ info1.result1(); info2.result2(); info3.result3(); }
κ²°κ³Ό ν™•μΈν•˜κΈ° 102.ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
202.μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
302.λ¦¬μ•‘νŠΈκ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

21. ν•¨μˆ˜ μœ ν˜• : κ°μ²΄λ¦¬ν„°λŸ΄ ν•¨μˆ˜

ν•¨μˆ˜λ₯Ό μ„ μ–Έν•˜κ³  λ§€κ°œλ³€μˆ˜λ₯Ό 3개 λ°›μŠ΅λ‹ˆλ‹€. "19번" λ°©λ²•λŒ€λ‘œ ν•˜λ©΄ ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν• λ•Œ μ „λΆ€ λ‹€ μ‹€ν–‰λ©λ‹ˆλ‹€. ν•˜μ§€λ§Œ "21번" λ°©λ²•λŒ€λ‘œ ν•˜λ©΄ λ‚΄κ°€ μ›ν•˜λŠ” ν•¨μˆ˜λ₯Ό μ‹€ν–‰ ν•  수 있게 λ©λ‹ˆλ‹€.

22. ν•¨μˆ˜ μ’…λ₯˜ : μ¦‰μ‹œ μ‹€ν–‰ ν•¨μˆ˜

μ¦‰μ‹œ μ‹€ν–‰ ν•¨μˆ˜(IIFE, Immediately Invoked Function Expression)λŠ” JavaScriptμ—μ„œ ν•¨μˆ˜λ₯Ό μ„ μ–Έν•˜μžλ§ˆμž μ¦‰μ‹œ μ‹€ν–‰λ˜λ„λ‘ ν•˜λŠ” ν•¨μˆ˜ ν‘œν˜„μ‹μž…λ‹ˆλ‹€. IIFEλ₯Ό μ‚¬μš©ν•˜λ©΄ μ „μ—­ μŠ€μ½”ν”„λ₯Ό μ˜€μ—Όμ‹œν‚€μ§€ μ•Šκ³  ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œλ§Œ μ‚¬μš©ν•  수 μžˆλŠ” λ³€μˆ˜λ₯Ό 생성할 수 있으며, ν•¨μˆ˜ λ‚΄λΆ€μ˜ μ½”λ“œλ₯Ό μΊ‘μŠν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

{
    (function (){
        document.write("500. ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.(μ‚¬μ΄νŠΈ λ‘œλ”©μ‹œμ— μ• λ‹ˆλ©”μ΄μ…˜μ΄λ‚˜ 뭐 μ‹€ν–‰λ˜κ³  μ‹Άμ„λ•Œ 많이 μ‚¬μš© 됨.)
"); })(); (() => { document.write("501. ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
") })(); }
κ²°κ³Ό ν™•μΈν•˜κΈ° 500. ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.(μ‚¬μ΄νŠΈ λ‘œλ”©μ‹œμ— μ• λ‹ˆλ©”μ΄μ…˜μ΄λ‚˜ 뭐 μ‹€ν–‰λ˜κ³  μ‹Άμ„λ•Œ 많이 μ‚¬μš© 됨.)
501. ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

22. ν•¨μˆ˜ μ’…λ₯˜ : μ¦‰μ‹œ μ‹€ν–‰ ν•¨μˆ˜

μ¦‰μ‹œ μ‹€ν–‰ ν•¨μˆ˜λŠ” νŽ˜μ΄μ§€κ°€ λΆˆλŸ¬μ§ˆλ•Œ 제일 λ¨Όμ € μ‹€ν–‰λ˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.(μš°μ„  μˆœμœ„κ°€ 1번쨰)

23. ν•¨μˆ˜ μ’…λ₯˜ : νŒŒλΌλ―Έν„° ν•¨μˆ˜

νŒŒλΌλ―Έν„° ν•¨μˆ˜(parameter function)λŠ” JavaScriptμ—μ„œ ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜(parameter)에 ν•¨μˆ˜λ₯Ό μ „λ‹¬ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€. νŒŒλΌλ―Έν„° ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜λ©΄ ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜λ‘œ ν•¨μˆ˜λ₯Ό μ „λ‹¬ν•˜μ—¬ μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±μ„ 높일 수 μžˆμŠ΅λ‹ˆλ‹€.

{
    function func(str = "600. ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
"){ document.write(str); } func(); }
κ²°κ³Ό ν™•μΈν•˜κΈ° 600. ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

23. ν•¨μˆ˜ μ’…λ₯˜ : νŒŒλΌλ―Έν„° ν•¨μˆ˜

ES10λΆ€ν„° μΆ”κ°€λœ λ°©λ²•μœΌλ‘œ λ§€κ°œλ³€μˆ˜μ— 데이터λ₯Ό ν• λ‹Ή ν•  μˆ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€.

24. ν•¨μˆ˜ μ’…λ₯˜ : μ•„νλ¨ΌνŠΈ ν•¨μˆ˜

μ•„νλ¨ΌνŠΈ ν•¨μˆ˜(arguments function)λŠ” JavaScriptμ—μ„œ ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” κ°μ²΄μž…λ‹ˆλ‹€. 이 κ°μ²΄λŠ” ν•¨μˆ˜ 호좜 μ‹œ μ „λ‹¬λœ 인수(argument)에 λŒ€ν•œ 정보λ₯Ό λ‹΄κ³  μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ μΈμˆ˜μ— μ ‘κ·Όν•˜κ±°λ‚˜ 인수의 개수λ₯Ό νŒŒμ•…ν•  λ•Œ μœ μš©ν•˜κ²Œ μ‚¬μš©λ©λ‹ˆλ‹€.

{
    function func(str1, str2){
        document.write(arguments[0]);
        document.write(arguments[1]);
    }
    func("ν•¨μˆ˜ μ‹€ν–‰1 ", "ν•¨μˆ˜ μ‹€ν–‰2
"); }
κ²°κ³Ό ν™•μΈν•˜κΈ° ν•¨μˆ˜ μ‹€ν–‰1
ν•¨μˆ˜ μ‹€ν–‰2

24. ν•¨μˆ˜ μ’…λ₯˜ : μ•„νλ¨ΌνŠΈ ν•¨μˆ˜

λ§€κ°œλ³€μˆ˜λ‘œ 전달 된 값듀을 agruments[0]λ²ˆμ§€λΌκ³  μ“°λ©΄ "ν•¨μˆ˜ μ‹€ν–‰2"κ°€ μ‹€ν–‰λ©λ‹ˆλ‹€.

25. ν•¨μˆ˜ μ’…λ₯˜ : μž¬κ·€ ν•¨μˆ˜(자기 μžμ‹ μ„ ν˜ΈμΆœμ‹œν‚€λŠ” ν•¨μˆ˜)

μž¬κ·€ ν•¨μˆ˜(recursive function)λŠ” 자기 μžμ‹ μ„ ν˜ΈμΆœν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€. 즉, ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ μžμ‹ μ„ λ‹€μ‹œ ν˜ΈμΆœν•˜μ—¬ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” λ°©μ‹μœΌλ‘œ λ™μž‘ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μž¬κ·€ ν˜ΈμΆœμ„ λ°˜λ³΅ν•˜λ©΄μ„œ μ›ν•˜λŠ” κ²°κ³Όλ₯Ό 얻을 수 μžˆλŠ” κ²½μš°κ°€ μžˆμŠ΅λ‹ˆλ‹€.

{
    function func(num){
        if(num <= 1){
            document.write("600.ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹Ή.
"); } else{ document.write(num + " "); func(num - 1); } // document.write(num); // func(num); μ΄λ ‡κ²Œν•˜λ©΄ λ¬΄ν•œλ£¨ν”„μ— 빠짐 } func(10); function animation(){ document.write("μ• λ‹ˆλ©”μ΄μ…˜μ΄ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€."); requestAnimationFrame(animation); } animation(); }
κ²°κ³Ό ν™•μΈν•˜κΈ° 10 9 8 7 6 5 4 3 2 600.ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹Ή.
μ• λ‹ˆλ©”μ΄μ…˜μ΄ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.(νŽ˜μ΄μ§€μ— λ„˜μΉ˜λ„λ‘ λ‚˜μ˜΄)

25. ν•¨μˆ˜ μ’…λ₯˜ : μž¬κ·€ ν•¨μˆ˜(자기 μžμ‹ μ„ ν˜ΈμΆœμ‹œν‚€λŠ” ν•¨μˆ˜)

μž¬κ·€ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜κ²Œ 되면 λ¬΄ν•œλ£¨ν”„μ— λΉ μ§€κ²Œ λ©λ‹ˆλ‹€. κ·Έλž˜μ„œ 쑰건문을 κ±Έμ–΄μ€˜μ„œ 반볡적으둜 μ‹€ν–‰ ν• λ–„ 많이 μ‚¬μš©ν•©λ‹ˆλ‹€.(μ• λ‹ˆλ©”μ΄μ…˜ 효과)

26. ν•¨μˆ˜ μ’…λ₯˜ : 콜백 ν•¨μˆ˜ : ν•¨μˆ˜λ₯Ό λ‘λ²ˆ μ‹€ν–‰(λ‹€λ₯Έ ν•¨μˆ˜μ— 인수둜 λ„˜κ²¨μ§€λŠ” ν•¨μˆ˜)

콜백 ν•¨μˆ˜(callback function)λž€, λ‹€λ₯Έ ν•¨μˆ˜μ˜ 인자둜 μ „λ‹¬λ˜μ–΄, ν•΄λ‹Ή ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ ν˜ΈμΆœλ˜λŠ” ν•¨μˆ˜λ₯Ό λ§ν•©λ‹ˆλ‹€. 즉, ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ λ‹€λ₯Έ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œ, ν•΄λ‹Ή ν•¨μˆ˜λ₯Ό λ§€κ°œλ³€μˆ˜λ‘œ μ „λ‹¬ν•˜μ—¬ μ‹€ν–‰ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

{
    function func(){
        document.write("2. ν•¨μˆ˜ μ‹€ν–‰");
    }
    function callback(str){
        document.write("1. ν•¨μˆ˜ μ‹€ν–‰");
        str();
    }
    callback(func);
}
κ²°κ³Ό ν™•μΈν•˜κΈ° 1. ν•¨μˆ˜ μ‹€ν–‰
2. ν•¨μˆ˜ μ‹€ν–‰

26. ν•¨μˆ˜ μ’…λ₯˜ : 콜백 ν•¨μˆ˜ : ν•¨μˆ˜λ₯Ό λ‘λ²ˆ μ‹€ν–‰(λ‹€λ₯Έ ν•¨μˆ˜μ— 인수둜 λ„˜κ²¨μ§€λŠ” ν•¨μˆ˜)

ν•¨μˆ˜ μ•ˆμ— ν•¨μˆ˜κ°€ μžˆλŠ” ν˜•νƒœμž…λ‹ˆλ‹€. callbackν•¨μˆ˜μ— λ§€κ°œλ³€μˆ˜λ‘œ ν•¨μˆ˜μ˜ 이름을 μ£Όκ³ . λ‹€λ₯Έ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ μ‹€ν–‰μ‹œν‚΅λ‹ˆλ‹€.