[컴][nodejs] babel es2015 에서 arguments 사용시에 주의할 점

how to use arguments built-in object on babel es2015 / variadic function / trailing parameters


babel es2015 에서 arguments 를 사용할 때 유의할 점.

babel 을 이용해서 es2015 를 사용하는데, 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;
};



See Also






댓글 1개:

  1. 호오.. 바벨을 오래 썼지만 잘못 트랜스파일 되는 경우도 있군요. 좋은 정보 감사합니다.

    답글삭제