2017-03-20 6 views
0

모두 4 개의 변수를 만들어야합니다.이 변수는 모두 임의의 합성 수를 포함합니다. 합성 숫자는 함수에 의해 생성됩니다. 아래 스크립트 대신 동일한 함수를 사용하여 4 개의 변수를 만드는 더 쉬운 방법이 있습니까?js에서 한 줄로 함수 출력에서 ​​여러 변수를 만드는 방법은 무엇입니까?

var a = create_composite(); 
var b = create_composite(); 
var c = create_composite(); 
var d = create_composite(); 
+0

네 개의 변수를 만드는 대신 네 개의 변수를 만드는 쉬운 방법이 있나요 필요로

이것은 많은 변수를 촬영할 수? 네가 묻고있는거야? –

답변

1

:

그렇지 않으면, 이전 버전의 브라우저에서, 당신은 여전히 ​​당신이 단지 등의 개별적 속성을 호출해야합니다, 함수가 객체를 반환 할 수 있습니다 당신은 무엇을 또 다른 옵션은을 수정하는 것입니다

// stub function 
 
const create_composite =() => Math.floor(Math.random() * 10) 
 

 
const [a, b, c, d] = (new Array(4)).fill(0).map(create_composite) 
 

 
console.log(a, b, c, d);

...하지만 가고있다 내가 위에서처럼

const create_composites = (qty=1) => { 
    return (new Array(qty)).fill(0).map(() => { 
     // original composite number function code 
    }); 
} 

이 그럼 당신은 유사한 방식으로이를 사용할 수 : 0 당신이 생성하고자하는 합성 수의 양을 적용합니다

const [a, b, c, d] = create_composites(4); 

우리는 당신의 create_composite를 변경 제안에있는 동안 기능, 내가 생각할 수있는 최고의 옵션은 generator에 해당 기능을 설정하는 것입니다 :

function* create_composite() { 
 
    while(true) 
 
    // yield your return value here 
 
    yield Math.floor(Math.random() * 10); 
 
} 
 
    
 
const [a, b, c, d, e, f, g] = create_composite(); 
 
console.log(a, b, c, d, e, f, g);
당신이

+0

다른 스크립트에서 일부 합성을 선언해야 할 수도 있습니다. 그렇다면이 방법이 유용 할 것입니다. 감사합니다 – Ansjovis86

+0

좋아요! @ Ansjovis86 도움이 된 것을 기쁘게 생각합니다. –

0

나는 이것이 가장 쉬운 방법이라고 생각합니다. 또한 그런 식으로 수행 할 수 있습니다 쉬운 방법은 :)이없는

var a = create_composite(), 
b = create_composite(), 
c = create_composite(), 
d = create_composite(); 

이 환경 설정에 있지만, 자바 스크립트에 의존입니다

당신이 ES6를 지원하는 브라우저에있어, 또는 바벨을 사용하는 경우
+0

하하, 그래, 내가 var를 세 번 쓸 수있을거야. 그러나, 나는 더 짧은 무엇인가 길을 바라고있다. – Ansjovis86

+0

실제로 4 개 이상의 변수가있는 경우 어떤 루프에서도이를 수행 할 수 있습니다. 함수가 각 호출 후에 다른 값을 반환하면 4 개의 다른 변수를 선언하는 더 쉬운 방법이 없습니다. –

0

또는 유사한,이 작업을 수행 할 수 있습니다

var { a, b, c, d } = create_composite(); 

을 create_composite가 키 A, B, C, D의 객체를 돌려주는 경우, 당신은 그 개별 변수에 액세스 할 수 있습니다. 이것은, 그건 확실하지 조금 짧은

var compositeNumber = create_composite(); 
console.log(compositeNumber.a);