返り値で渡す
JavaScript
1'use strict';
2function input () {
3 var a = 1;
4 var b = 2;
5
6 return {a: a, b: b};
7}
8
9function output () {
10 var obj = input();
11
12 console.log(obj.a);
13 console.log(obj.b);
14}
15
16output();
関数を返す (クロージャ)
JavaScript
1'use strict';
2function input () {
3 var a = 1;
4 var b = 2;
5
6 return function (arg) {
7 return {a: a, b: b}[arg];
8 };
9}
10
11function output () {
12 var fn = input();
13
14 console.log(fn('a'));
15 console.log(fn('b'));
16}
17
18output();
WeakMap
下記コードは簡単な例ですが、WeakMap はキーとなる変数のスコープが get() のスコープに直結する為、スコープ制御がしやすいメリットがあります。
JavaScript
1'use strict';
2var wm = new WeakMap;
3
4function input (key) {
5 var a = 1;
6 var b = 2;
7
8 wm.set(key, {a: a, b: b});
9}
10
11function output () {
12 var obj = {}, inputObject;
13
14 input(obj);
15 inputObject = wm.get(obj);
16
17 console.log(inputObject.a);
18 console.log(inputObject.b);
19}
20
21output();
Re: moscow3 さん