2016-11-09 26 views
-1

jsで内部関数にアクセスする方法。言い換えれば、「復帰機能」と「復帰機能」の違いは何ですか?"返り値付き関数"と "返り値なし関数"の差

function makeAdder(x) { 

    function add(y) { 
     console.log(x,y) 
     return x+y; 
    }; 
} 

makeAdder(3)(4) // error 

なしリターン

function makeAdder(x) { 

    function add(y) { 
     console.log(x,y) 
     return x+y; 
    }; 

    return add; 

} 

makeAdder(3)(4) // 7 

私はコーディングする方法makeAdder(3).add(4)、同じようadd()にアクセスしたい場合は?

答えて

1

機能は何return文を持っていない場合は、暗黙的にundefinedを返します。あなたが述べたように、あなたが.addを呼び出したい場合は、あなたの関数はaddプロパティを持つオブジェクトを返す必要があります:

function makeAdder(x) { 
 
    return { 
 
     add(y) { 
 
     return x+y; 
 
     } 
 
    }; 
 
} 
 

 
console.log(makeAdder(3).add(4)) // 7

を別の方法として、あなたはまた、より伝統的なオブジェクト指向のアプローチのためのES6 classesを使用することができます。

class Adder { 
 
    constructor(x) { 
 
    this.x = x 
 
    } 
 
    
 
    add(y) { 
 
    return this.x + y 
 
    } 
 
} 
 

 
console.log(new Adder(3).add(5))

1

makeAdderこの場合、objectを返す必要があります。

makeAdder(3)を呼び出すと、addという機能を持つキーを持つobjectが返されます。

function makeAdder(x) { 
 
    function add(y) { 
 
    console.log(x, y) 
 
    return x + y; 
 
    }; 
 
    return { 
 
    add: add 
 
    }; 
 
} 
 

 
console.log(makeAdder(3).add(4));

関連する問題