@aga의 솔루션 은 훌륭하지만 JavaScript 엔진 에 Array.prototype.filter () 가 없기 때문에 IE8과 같은 구형 브라우저에서는 작동하지 않습니다 .
광범위한 브라우저 (IE 5.5-8 포함)에서 작동하는 효율적인 솔루션에 관심이 있고 jQuery가 필요하지 않은 사람들 은 아래를 참조하십시오.
var join = function (separator /*, strings */) {
// Do not use:
// var args = Array.prototype.slice.call(arguments, 1);
// since it prevents optimizations in JavaScript engines (V8 for example).
// (See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments)
// So we construct a new array by iterating through the arguments object
var argsLength = arguments.length,
strings = [];
// Iterate through the arguments object skipping separator arg
for (var i = 1, j = 0; i < argsLength; ++i) {
var arg = arguments[i];
// Filter undefineds, nulls, empty strings, 0s
if (arg) {
strings[j++] = arg;
}
}
return strings.join(separator);
};
여기에는 MDN에 설명 된 몇 가지 성능 최적화가 포함 됩니다 .
다음은 사용 예입니다.
var fullAddress = join(', ', address, city, state, zip);