/**
* Concatenates the values of a variable into an easily readable string
* by Matt Hackett [scriptnode.com]
* @param {Object} x The variable to debug
* @param {Number} max The maximum number of recursions allowed (keep low, around 5 for HTML elements to prevent errors) [default: 10]
* @param {String} sep The separator to use between [default: a single space ' ']
* @param {Number} l The current level deep (amount of recursion). Do not use this parameter: it's for the function's own use
*/
function print_jc(x, max, sep, l) {
l = l || 0;
max = max || 10;
sep = sep || ' ';
if (l > max) {
return "[WARNING: Too much recursion]\n";
}
var
i,
r = '',
t = typeof x,
tab = '\t';
if (x === null) {
r += "(null)\n";
} else if (t == 'object') {
l++;
for (i = 0; i < l; i++) {
tab += sep;
}
if (x && x.length) {
t = 'Array';
}
r += '(' + t + ") \n";
r += '('+"\n";
for (i in x) {
try {
r += tab + '[' + i + '] => ' + print_jc(x[i], max, sep, (l + 1));
} catch(e) {
return "[ERROR: " + e + "]\n";
}
}
r += ')';
} else {
if (t == 'string') {
if (x == '') {
x = '(empty)';
}
}
r += '(' + t + ') ' + x + "\n";
}
return r;
}
TEST:
//var colors = new Array("red", "blue", "green");
var colors = ["red", "blue", "green"];
document.write('');
document.write(print_jc(colors));
document.write('');
Output:
(Array) ( [0] => (string) red [1] => (string) blue [2] => (string) green )
REFERENCES
http://scriptnode.com/article/javascript-print_r-or-var_dump-equivalent/
