Вывод JS массива как в PHP. print_r

Не буду долго расписывать. Функция ниже: Из интересного: print_r(arr, space) - параметр arr(выводимый массив), space(отступ текущего массива) - нужен для красивого вывода вложенных массивов. 
space = space || "" - проверка на существование аргумента. Если функция будет вызвана с 1 аргументом, то space = undefined. Чтобы не выводить это сообщение, устанавливаем space = "" (если аргумент не задан изначально).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function print_r(arr, space) {
  //Проверка аргумента
  //Если он есть, то присвоить себя
  //Иначе присвоить пустую строку
  space = space || "";
  var result = " " + (arr.length ? "Array" : "Object") + " \n " + space + " ( \n";
  var iter = 0;
 
  //Такой вид прохода по массиву позволяет вызывать эту функцию любым массивом
  // (даже с объектом)
  for (var i in arr) {
    iter++;
 
    //Проверка на существование следующего элемента массива
    // (или объекта, неважно)
    if (arr[i] != null) {
      if ((arr[i].length > 0 || typeof (arr[i]) === "object") && typeof (arr[i]) !== "string") {
        result += "\t" + space + " [ " + i + " ] =>" + print_r(arr[i], space + "\t");
      } else {
        result += "\t" + space + " [ " + i + " ] => " + arr[i];
      }
      if (iter < Object.keys(arr).length) {
        result += ",";
      }
      result += "\n";
    }
  }
  return result + space + " )";
}
Как использовать:
1
2
3
4
5
6
7
8
9
10
11
12
13
var my_array=[
    "первый элемент",
    "второй",
    [
        "первый вложенный элемент",
        [
            "Третий уровень массива",
            2534
        ]
    ],
    "третий"
];
document.write("<pre>"+print_r(my_array)+"</pre>");
P.S. Важно понимать, что текущий алгоритм использует рекурсию. Это накладывает определённые ограничения на размер массива (труднодостижимые, но всё же). Спасибо за внимание.
Если статья Вам показалась незаконченной или Вы знаете как её улучшить, пожалуйста сообщите мне e@gohtml.ru