@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);