LearnApplyShare

[js] 랜덤 문자열 생성함수

July 18, 2019 - [vinillajs]

간단하게 랜덤문자열을 생성하는 함수

function createRandomString(length = 5) {
    let text = ''
    const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
    Array(length).forEach(() => {
        text += possible.charAt(Math.floor(Math.random() * possible.length))
    })
    return text
}

그런데 정말 이상한 것이.. 어제까지만 해도 잘 동작하던 코드였는데

오늘 갑자기 테스트코드에서 오류가 발생해서 봤더니.. forEach 루프 안으로 들어오지 않는 문제가 있었다. 잘 돌던 코드가 갑자기 왜 안 된거지..??? 갑자기 js 스펙이 바뀔리는 없는데.. 모르겠다.

일단 아래와 같이 workarround 처리

Array.from(Array(length)).forEach(() => {
    text += possible.charAt(Math.floor(Math.random() * possible.length))
})

덧) 그냥 for 문을 써도 되는데.. 굳이 저렇게 하는 이유는.. 그냥 괜히 코드가 이쁘고 요즘 함수형프로그래밍을 공부하면서 if문 for문과 작별을 하는 중이기 때문에..