babel 을 이용해서 es2015 를 사용하는데, babel es2015 에서 arguments 를 사용할 때 유의할 점.arguments 를 사용해서 작성된 code 가 원하지 않은 방향으로 compile 됐다.
아래와 같이 arguments 를 사용하는 code 를 사용하는데, 이것을 babel es2015 를 이용해서 transpile 했다.
var extend = (out) => { out = out || {}; for (var i = 1; i < arguments.length; i++) { if (!arguments[i]) continue; for (var key in arguments[i]) { if (arguments[i].hasOwnProperty(key)) out[key] = arguments[i][key]; } } return out; };
그랬더니 arguments 를 외부에서 가져왔다. 이 arguments 는 여기 에서 보듯이 function 으로 넘어오는 parameter 를 가지고 있는 built-in object 이다.
그런데 이녀석을 외부에서 가져와서 값이 이상해 졌다.
수정
이것을 변하지 않도록 하는 법은 모르겠다. 하지만 arguments 를 사용하도록 하는 법은 아래처럼 수정하면 가능했다.(참고)
var extend = (...args) => { var out = args[0] || {}; for (var i = 1; i < args.length; i++) { if (!args[i]) continue; for (var key in args[i]) { if (args[i].hasOwnProperty(key)) out[key] = args[i][key]; } } return out; };
호오.. 바벨을 오래 썼지만 잘못 트랜스파일 되는 경우도 있군요. 좋은 정보 감사합니다.
답글삭제