aboutsummaryrefslogtreecommitdiff
path: root/files/id/web/javascript/reference/errors
diff options
context:
space:
mode:
Diffstat (limited to 'files/id/web/javascript/reference/errors')
-rw-r--r--files/id/web/javascript/reference/errors/called_on_incompatible_type/index.html69
-rw-r--r--files/id/web/javascript/reference/errors/index.html12
-rw-r--r--files/id/web/javascript/reference/errors/invalid_array_length/index.html78
-rw-r--r--files/id/web/javascript/reference/errors/missing_semicolon_before_statement/index.html78
-rw-r--r--files/id/web/javascript/reference/errors/negative_repetition_count/index.html45
-rw-r--r--files/id/web/javascript/reference/errors/not_a_codepoint/index.html56
-rw-r--r--files/id/web/javascript/reference/errors/not_defined/index.html66
-rw-r--r--files/id/web/javascript/reference/errors/property_access_denied/index.html47
-rw-r--r--files/id/web/javascript/reference/errors/too_much_recursion/index.html70
9 files changed, 521 insertions, 0 deletions
diff --git a/files/id/web/javascript/reference/errors/called_on_incompatible_type/index.html b/files/id/web/javascript/reference/errors/called_on_incompatible_type/index.html
new file mode 100644
index 0000000000..4fab8e8ca2
--- /dev/null
+++ b/files/id/web/javascript/reference/errors/called_on_incompatible_type/index.html
@@ -0,0 +1,69 @@
+---
+title: X.prototype.y called on incompatible type
+slug: Web/JavaScript/Reference/Errors/Called_on_incompatible_type
+tags:
+ - Error
+ - JavaScript
+ - TypeError
+translation_of: Web/JavaScript/Reference/Errors/Called_on_incompatible_type
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="Message">Message</h2>
+
+<pre class="syntaxbox">TypeError: 'this' is not a Set object (EdgE)
+TypeError: Function.prototype.toString called on incompatible object (Firefox)
+TypeError: Function.prototype.bind called on incompatible target (Firefox)
+TypeError: Method Set.prototype.add called on incompatible receiver undefined (Chrome)
+TypeError: Bind must be called on a function (Chrome)
+</pre>
+
+<h2 id="Tipe_error">Tipe error</h2>
+
+<p>{{jsxref("TypeError")}}</p>
+
+<h2 id="Apa_yang_salah">Apa yang salah?</h2>
+
+<p>Ketika error ini dilempar, suatu fungsi (dari objek yang diberikan), dipanggil dengan <code>this</code> tidak berkorespondensi ke tipe yang diharapkan fungsi tersebut.</p>
+
+<p>Isu ini bisa terbit ketika menggunakan metode {{jsxref("Function.prototype.call()")}} atau {{jsxref("Function.prototype.apply()")}}, dan menyediakan argumen <code>this</code> yang tak punya tipe yang diharapkan.</p>
+
+<p>Isu ini juga bisa terjadi ketika menyediakan fungsi yang disimpan sebagai properti suatu objek sebagai argumen fungsi lain. Dalam hal ini, objek yang menyimpan fungsi tersebut takkan menjadi target <code>this</code> target dari fungsi itu ketika dipanggil oleh fungsi lain. Untuk mengatasi isu ini, kamu harus menyediakan lambda yang membuat panggilan, ataupun menggunakan fungsi {{jsxref("Function.prototype.bind()")}} untuk memaksa argumen <code>this</code> ke objek yang diharapkan.</p>
+
+<h2 id="Contoh">Contoh</h2>
+
+<h3 id="Kasus_tak_valid">Kasus tak valid</h3>
+
+<pre class="brush: js example-bad">var mySet = new Set;
+['bar', 'baz'].forEach(mySet.add);
+// mySet.add adalah fungsi, tapi "mySet" tidak dikaptur sebagai this.
+
+var myFun = function () {
+ console.log(this);
+};
+['bar', 'baz'].forEach(myFun.bind);
+// myFun.bind adalah fungsi, tapi "myFun" tidak dikaptur sebagai this.
+
+</pre>
+
+<h3 id="Kasus_valid">Kasus valid</h3>
+
+<pre class="brush: js example-good">var mySet = new Set;
+['bar', 'baz'].forEach(mySet.add.bind(mySet));
+// Ini berjalan karena mengikat "mySet" sebagai this.
+
+var myFun = function () {
+ console.log(this);
+};
+['bar', 'baz'].forEach(x =&gt; myFun.bind(x));
+// Ini berjalan menggunakan fungsi "bind". Ia membuat lambda yang meneruskan argumen.
+
+</pre>
+
+<h2 id="Lihat_juga">Lihat juga</h2>
+
+<ul>
+ <li>{{jsxref("Function.prototype.call()")}}</li>
+ <li>{{jsxref("Function.prototype.apply()")}}</li>
+ <li>{{jsxref("Function.prototype.bind()")}}</li>
+</ul>
diff --git a/files/id/web/javascript/reference/errors/index.html b/files/id/web/javascript/reference/errors/index.html
new file mode 100644
index 0000000000..68e7cce3df
--- /dev/null
+++ b/files/id/web/javascript/reference/errors/index.html
@@ -0,0 +1,12 @@
+---
+title: Referensi error JavaScript
+slug: Web/JavaScript/Reference/Errors
+tags:
+ - JavaScript
+translation_of: Web/JavaScript/Reference/Errors
+---
+<p>{{jsSidebar("Errors")}}</p>
+
+<p>Error, error dimana - mana.</p>
+
+<p>{{ListSubPages("/en-US/docs/Web/JavaScript/Reference/Errors")}}</p>
diff --git a/files/id/web/javascript/reference/errors/invalid_array_length/index.html b/files/id/web/javascript/reference/errors/invalid_array_length/index.html
new file mode 100644
index 0000000000..3b7fd4e78e
--- /dev/null
+++ b/files/id/web/javascript/reference/errors/invalid_array_length/index.html
@@ -0,0 +1,78 @@
+---
+title: 'RangeError: invalid array length'
+slug: Web/JavaScript/Reference/Errors/Invalid_array_length
+tags:
+ - Errors
+ - JavaScript
+ - RangeError
+translation_of: Web/JavaScript/Reference/Errors/Invalid_array_length
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="Message">Message</h2>
+
+<pre class="syntaxbox">RangeError: Array length must be a finite positive integer (Edge)
+RangeError: invalid array length (Firefox)
+RangeError: Invalid array length (Chrome)
+RangeError: Invalid array buffer length (Chrome)
+</pre>
+
+<h2 id="Tipe_error">Tipe error</h2>
+
+<p>{{jsxref("RangeError")}}</p>
+
+<h2 id="Apa_yang_salah">Apa yang salah?</h2>
+
+<p>Panjang array tak valid bisa muncul di situasi berikut:</p>
+
+<ul>
+ <li>Ketika membuat satu {{jsxref("Array")}} atau {{jsxref("ArrayBuffer")}} yang punya panjang negatif atau lebih besar atau sama dengan 2<sup>32</sup>, atau</li>
+ <li>ketika mengeset properti {{jsxref("Array.length")}} ke nilai negatif atau lebih besar atau sama dengan 2<sup>32</sup>.</li>
+</ul>
+
+<p>Kenapa panjang <code>Array</code> dan <code>ArrayBuffer</code> dibatasi? Properti <code>length</code> dari <code>Array</code> atau <code>ArrayBuffer</code> diwakili dengan satu unsigned 32-bit integer, yang hanya menyimpan nilai dalam kisaran dari 0 hingga 2<sup>32</sup>-1.</p>
+
+<p>Jika kamu membuat satu <code>Array</code>, menggunakan constructor, kamu mungkin mau memakai notasi literal saja, karena argumen pertama diinterpretasi sebagai panjang <code>Array</code>.</p>
+
+<p>Sebaliknya, kamu mungkin mau mengelam panjangnya sebelum mengeset properti panjangnya, atau memakainya sebagai argumen konstructor.</p>
+
+<h2 id="Contoh">Contoh</h2>
+
+<h3 id="Kasus_tak_valid">Kasus tak valid</h3>
+
+<pre class="brush: js example-bad">new Array(Math.pow(2, 40))
+new Array(-1)
+new ArrayBuffer(Math.pow(2, 32))
+new ArrayBuffer(-1)
+
+let a = [];
+a.length = a.length - 1; // set -1 to the length property
+
+let b = new Array(Math.pow(2, 32) - 1);
+b.length = b.length + 1; // set 2^32 to the length property
+</pre>
+
+<h3 id="Kasus_valid">Kasus valid</h3>
+
+<pre class="brush: js example-good">[ Math.pow(2, 40) ] // [ 1099511627776 ]
+[ -1 ] // [ -1 ]
+new ArrayBuffer(Math.pow(2, 32) - 1)
+new ArrayBuffer(0)
+
+let a = [];
+a.length = Math.max(0, a.length - 1);
+
+let b = new Array(Math.pow(2, 32) - 1);
+b.length = Math.min(0xffffffff, b.length + 1);
+
+// 0xffffffff is the hexadecimal notation for 2^32 - 1
+// which can also be written as (-1 &gt;&gt;&gt; 0)
+</pre>
+
+<h2 id="Lihat_juga">Lihat juga</h2>
+
+<ul>
+ <li>{{jsxref("Array")}}</li>
+ <li>{{jsxref("Array.length")}}</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+</ul>
diff --git a/files/id/web/javascript/reference/errors/missing_semicolon_before_statement/index.html b/files/id/web/javascript/reference/errors/missing_semicolon_before_statement/index.html
new file mode 100644
index 0000000000..32be54e5ce
--- /dev/null
+++ b/files/id/web/javascript/reference/errors/missing_semicolon_before_statement/index.html
@@ -0,0 +1,78 @@
+---
+title: 'SyntaxError: missing ; before statement'
+slug: Web/JavaScript/Reference/Errors/Missing_semicolon_before_statement
+translation_of: Web/JavaScript/Reference/Errors/Missing_semicolon_before_statement
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="Pesan">Pesan</h2>
+
+<pre class="syntaxbox">SyntaxError: Expected ';' (Edge)
+SyntaxError: missing ; before statement (Firefox)
+</pre>
+
+<h2 id="Tipe_error">Tipe error</h2>
+
+<p>{{jsxref("SyntaxError")}}.</p>
+
+<h2 id="Apa_yang_Salah">Apa yang Salah?</h2>
+
+<p>Ada titik koma (<code>;</code>) yang hilang di suatu tempat. <a href="/en-US/docs/Web/JavaScript/Reference/Statements">JavaScript statements</a> harus diakhiri dengan semicolon. Beberapa dari mereka dipengaruhi oleh <a href="/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Automatic_semicolon_insertion">automatic semicolon insertion (ASI)</a>, tetapi dalam hal ini anda perlu memberikan titik koma, sehingga JavaScript dapat mem-parse kode sumber dengan benar.</p>
+
+<p>Namun, seringkali, kesalahan ini hanya merupakan konsekuensi dari kesalahan lain, seperti tidak menempatkan string dengan benar, atau menggunakan var secara salah. Ada mungkin juga memiliki terlalu banyak tanda kurung di suatu tempat. Hati-hati memeriksa sintaks ketika kesalahan ini dilemparkan.</p>
+
+<h2 id="Contoh">Contoh</h2>
+
+<h3 id="Unescaped_strings">Unescaped strings</h3>
+
+<p>Kesalahan ini dapat terjadi dengan mudah ketika tidak melepaskan string dengan benar dan engine JavaScript is expecting the end of your string already. Sebagai contoh:</p>
+
+<pre class="brush: js example-bad">var foo = 'Tom's bar';
+// SyntaxError: missing ; before statement</pre>
+
+<p>Anda dapat menggunakan double quotes, atau menggunakan tanda kutip dengan menambahkan backslash</p>
+
+<pre class="brush: js example-good">var foo = "Tom's bar";
+var foo = 'Tom\'s bar';
+</pre>
+
+<h3 id="Declaring_properties_with_var">Declaring properties with var</h3>
+
+<p>Anda tidak dapat mendeklarasikan property dari sebuah objek atau larik(array) <code>dengan deklarasi var</code>.</p>
+
+<pre class="brush: js example-bad">var obj = {};
+var obj.foo = 'hi'; // SyntaxError missing ; before statement
+
+var array = [];
+var array[0] = 'there'; // SyntaxError missing ; before statement
+</pre>
+
+<p>Sebagai gantinya, hapus kata kunci var:</p>
+
+<pre class="brush: js example-good">var obj = {};
+obj.foo = 'hi';
+
+var array = [];
+array[0] = 'there';
+</pre>
+
+<h3 id="Kata_kunci_yang_buruk">Kata kunci yang buruk</h3>
+
+<p>Jika ada berasal dari bahasa pemrograman yang lain, itu juga umum untuk menggunakan kata kunci yang tidak berarti sama atau tidak memiliki arti sama sekali di JavaScript:</p>
+
+<pre class="brush: js example-bad">def print(info){
+ console.log(info);
+}; // SyntaxError missing ; before statement</pre>
+
+<p>Sebagai gantinya, gunakan <code>function</code> daripada menggunakan kata kunci <code>def</code>:</p>
+
+<pre class="brush: js example-good">function print(info){
+ console.log(info);
+};</pre>
+
+<h2 id="See_also">See also</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Automatic_semicolon_insertion">Automatic semicolon insertion (ASI)</a></li>
+ <li><a href="/en-US/docs/Web/JavaScript/Reference/Statements">JavaScript statements</a></li>
+</ul>
diff --git a/files/id/web/javascript/reference/errors/negative_repetition_count/index.html b/files/id/web/javascript/reference/errors/negative_repetition_count/index.html
new file mode 100644
index 0000000000..0ea4bec83a
--- /dev/null
+++ b/files/id/web/javascript/reference/errors/negative_repetition_count/index.html
@@ -0,0 +1,45 @@
+---
+title: 'RangeError: repeat count must be non-negative'
+slug: Web/JavaScript/Reference/Errors/Negative_repetition_count
+tags:
+ - Errors
+ - JavaScript
+ - RangeError
+translation_of: Web/JavaScript/Reference/Errors/Negative_repetition_count
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="Pesan">Pesan</h2>
+
+<pre class="syntaxbox">RangeError: argument out of range
+RangeError: repeat count must be non-negative (Firefox)
+RangeError: Invalid count value (Chrome)
+</pre>
+
+<h2 id="Tipe_error">Tipe error</h2>
+
+<p>{{jsxref("RangeError")}}</p>
+
+<h2 id="Apa_yang_salah">Apa yang salah?</h2>
+
+<p>Metode {{jsxref("String.prototype.repeat()")}} telah digunakan. Ia punya parameter <code>count</code> mengindikasikan jumlah pengulangan string. Ia harus bernilai antara 0 dan kurang dari positif {{jsxref("Infinity")}} dan tidak boleh angka negatif. Kisarannya nilai yang diperbolehkan bisa dijelaskan seperti ini: [0, +∞).</p>
+
+<h2 id="Contoh">Contoh</h2>
+
+<h3 id="Kasus_tak_valid">Kasus tak valid</h3>
+
+<pre class="brush: js example-bad">'abc'.repeat(-1); // RangeError </pre>
+
+<h3 id="Kasus_valid">Kasus valid</h3>
+
+<pre class="brush: js example-good">'abc'.repeat(0); // ''
+'abc'.repeat(1); // 'abc'
+'abc'.repeat(2); // 'abcabc'
+'abc'.repeat(3.5); // 'abcabcabc' (count will be converted to integer)
+</pre>
+
+<h2 id="Lihat_juga">Lihat juga</h2>
+
+<ul>
+ <li>{{jsxref("String.prototype.repeat()")}}</li>
+</ul>
diff --git a/files/id/web/javascript/reference/errors/not_a_codepoint/index.html b/files/id/web/javascript/reference/errors/not_a_codepoint/index.html
new file mode 100644
index 0000000000..d3d8b2f934
--- /dev/null
+++ b/files/id/web/javascript/reference/errors/not_a_codepoint/index.html
@@ -0,0 +1,56 @@
+---
+title: 'RangeError: argument is not a valid code point'
+slug: Web/JavaScript/Reference/Errors/Not_a_codepoint
+tags:
+ - Errors
+ - JavaScript
+ - RangeError
+translation_of: Web/JavaScript/Reference/Errors/Not_a_codepoint
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="Pesan">Pesan</h2>
+
+<pre class="syntaxbox">RangeError: Invalid code point {0} (Edge)
+RangeError: {0} is not a valid code point (Firefox)
+RangeError: Invalid code point {0} (Chrome)
+</pre>
+
+<p> </p>
+
+<h2 id="Tipe_error">Tipe error</h2>
+
+<p>{{jsxref("RangeError")}}</p>
+
+<h2 id="Apa_yang_salah">Apa yang salah?</h2>
+
+<p><span class="seoSummary">{{jsxref("String.fromCodePoint()")}} throws this error when passed {{jsxref("NaN")}} values, negative Integers (-1), non-Integers (5.4), or values larger than 0x10FFFF (1114111).</span></p>
+
+<p>Satu <a href="https://en.wikipedia.org/wiki/Code_point">poin kode</a> ialah satu nilai dalam codespace Unicode; yaitu, kisaran integer dari <code>0</code> hingga <code>0x10FFFF</code>.</p>
+
+<h2 id="Contoh">Contoh</h2>
+
+<h3 id="Kasus_tak_nvalid">Kasus tak nvalid</h3>
+
+<pre class="brush: js example-bad">String.fromCodePoint('_'); // RangeError
+String.fromCodePoint(Infinity); // RangeError
+String.fromCodePoint(-1); // RangeError
+String.fromCodePoint(3.14); // RangeError
+String.fromCodePoint(3e-2); // RangeError
+String.fromCodePoint(NaN); // RangeError</pre>
+
+<h3 id="Kasus_valid">Kasus valid</h3>
+
+<pre class="brush: js example-good">String.fromCodePoint(42); // "*"
+String.fromCodePoint(65, 90); // "AZ"
+String.fromCodePoint(0x404); // "\u0404"
+String.fromCodePoint(0x2F804); // "\uD87E\uDC04"
+String.fromCodePoint(194564); // "\uD87E\uDC04"
+String.fromCodePoint(0x1D306, 0x61, 0x1D307) // "\uD834\uDF06a\uD834\uDF07"
+</pre>
+
+<h2 id="Lihat_juga">Lihat juga</h2>
+
+<ul>
+ <li>{{jsxref("String.fromCodePoint()")}}</li>
+</ul>
diff --git a/files/id/web/javascript/reference/errors/not_defined/index.html b/files/id/web/javascript/reference/errors/not_defined/index.html
new file mode 100644
index 0000000000..d0dc93a0c6
--- /dev/null
+++ b/files/id/web/javascript/reference/errors/not_defined/index.html
@@ -0,0 +1,66 @@
+---
+title: 'ReferenceError: "x" is not defined'
+slug: Web/JavaScript/Reference/Errors/Not_defined
+translation_of: Web/JavaScript/Reference/Errors/Not_defined
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="Pesan">Pesan</h2>
+
+<pre class="syntaxbox">ReferenceError: "x" is not defined
+</pre>
+
+<h2 id="Type_Error">Type Error</h2>
+
+<p>{{jsxref("ReferenceError")}}.</p>
+
+<h2 id="Mengapa_salah">Mengapa salah?</h2>
+
+<p>Tidak ditemukannya referensi variabel dimanapun. Variabel ini perlu dideklarasikan, atau anda pastikan lagi bahwa ada di dalam script atau {{Glossary("scope")}} anda.</p>
+
+<div class="note">
+<p><strong>Note:</strong> Ketika memanggil sebuah library (seperti jQuery), pastikan memanggilnya terlebih dahulu tanda "$" sebelum mengakses variabel library. Gunakan tag {{HTMLElement("script")}} untuk memanggil library sebelum menggunakannya pada kode anda.</p>
+</div>
+
+<h2 id="Contoh">Contoh</h2>
+
+<h3 id="Variable_tidak_dideklarasikan">Variable tidak dideklarasikan</h3>
+
+<pre class="brush: js example-bad">foo.substring(1); // ReferenceError: foo is not defined
+</pre>
+
+<p>Variabel "foo" tidak ditemukan dimanapun. Variabel tersebut diperlukan oleh beberapa string, agar metode {{jsxref("String.prototype.substring()")}} dapat bekerja.</p>
+
+<pre class="brush: js example-good">var foo = 'bar';
+foo.substring(1); // "ar"</pre>
+
+<h3 id="Ruang_lingkup_salah">Ruang lingkup salah</h3>
+
+<p><span id="result_box" lang="id"><span>Sebuah variabel harus tersedia dalam kontek eksekusi saat ini</span></span> . Variabel yang berada di dalam sebuah <a href="/en-US/docs/Web/JavaScript/Reference/Functions">fungsi</a> tidak dapat diakses dari luar fungsi, sebab sebuah variabel mepunyai batasan pada cakupan wilayah sebuah fungsi</p>
+
+<pre class="brush: js example-bad">function numbers() {
+ var num1 = 2,
+ num2 = 3;
+ return num1 + num2;
+}
+
+console.log(num1); // ReferenceError num1 is not defined.</pre>
+
+<p>Dengan demikian sebuah fungsi dapat mengakses semua variabel dan fungsi lainnya yang didefinisikan di dalam cakupan dimana ia didefinisikan. Dengan kata lain, sebiah fungsi yang didefinisikan di cakupan global dapat mengakses semua variabel yang didefinisian secara global pula.</p>
+
+<pre class="brush: js example-good">var num1 = 2,
+ num2 = 3;
+
+function numbers() {
+ return num1 + num2;
+}
+
+console.log(numbers()); // 5</pre>
+
+<h2 id="Lihat_juga">Lihat juga</h2>
+
+<ul>
+ <li>{{Glossary("Scope")}}</li>
+ <li><a href="/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#Declaring_variables">Panduan pendeklarasian variabel dalam JavaScript</a></li>
+ <li><a href="/en-US/docs/Web/JavaScript/Guide/Functions#Function_scope/en-US/docs/">Panduan cakupan fungsi pada JavaScript</a></li>
+</ul>
diff --git a/files/id/web/javascript/reference/errors/property_access_denied/index.html b/files/id/web/javascript/reference/errors/property_access_denied/index.html
new file mode 100644
index 0000000000..6cbece3868
--- /dev/null
+++ b/files/id/web/javascript/reference/errors/property_access_denied/index.html
@@ -0,0 +1,47 @@
+---
+title: 'Error: Permission denied to access property "x"'
+slug: Web/JavaScript/Reference/Errors/Property_access_denied
+tags:
+ - Error
+ - Errors
+ - JavaScript
+ - Keamanan
+translation_of: Web/JavaScript/Reference/Errors/Property_access_denied
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="Pesan">Pesan</h2>
+
+<pre class="syntaxbox">Error: Permission denied to access property "x"
+</pre>
+
+<h2 id="Tipe_error">Tipe error</h2>
+
+<p>{{jsxref("Error")}}.</p>
+
+<h2 id="Apa_kesalahannya">Apa kesalahannya?</h2>
+
+<p><span class="seoSummary">Ada usaha pengaksesan objeck yang kamu belum punya ijinnya. Sepertinya elemen {{HTMLElement("iframe")}} diload dari domain berbeda yang kebijakan <a href="/en-US/docs/Web/Security/Same-origin_policy">same-origin policy</a>nya kamu langgar.</span></p>
+
+<h2 id="Contoh">Contoh</h2>
+
+<pre class="brush: html">&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;iframe id="myframe" src="http://www1.w3c-test.org/common/blank.html"&gt;&lt;/iframe&gt;
+    &lt;script&gt;
+      onload = function() {
+ console.log(frames[0].document);
+ // Error: Permission denied to access property "document"
+ }
+    &lt;/script&gt;
+  &lt;/head&gt;
+  &lt;body&gt;&lt;/body&gt;
+&lt;/html&gt;</pre>
+
+<h2 id="Lihat_juga">Lihat juga</h2>
+
+<ul>
+ <li>{{HTMLElement("iframe")}}</li>
+ <li><a href="/en-US/docs/Web/Security/Same-origin_policy">Same-origin policy</a></li>
+</ul>
diff --git a/files/id/web/javascript/reference/errors/too_much_recursion/index.html b/files/id/web/javascript/reference/errors/too_much_recursion/index.html
new file mode 100644
index 0000000000..4c35bcfc83
--- /dev/null
+++ b/files/id/web/javascript/reference/errors/too_much_recursion/index.html
@@ -0,0 +1,70 @@
+---
+title: 'InternalError: too much recursion'
+slug: Web/JavaScript/Reference/Errors/Too_much_recursion
+tags:
+ - Errors
+ - InternalError
+ - JavaScript
+translation_of: Web/JavaScript/Reference/Errors/Too_much_recursion
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="Pesan">Pesan</h2>
+
+<pre class="syntaxbox">Error: Out of stack space (Edge)
+InternalError: too much recursion (Firefox)
+RangeError: Maximum call stack size exceeded (Chrome)
+</pre>
+
+<h2 id="Tipe_error">Tipe error</h2>
+
+<p>{{jsxref("InternalError")}}.</p>
+
+<h2 id="Apa_yang_salah">Apa yang salah?</h2>
+
+<p>Fungsi yang memanggil dirinya sendiri disebut <em>fungsi rekursif</em>. Sekali satu kondisi telah ketemu, fungsi itu berhenti memanggil dirinya. Ini disebut <em>base case</em>.</p>
+
+<p>Dalam beberapa cara, rekursi analog dengan loop. Keduanya mengeksekusi kode yang sama berulang kali, dan keduanya membutuhkan satu kondisi (untuk mencegah loop tak-terbatas, atau lebih tepatnya, rekursi tak-terbatas dalam hal ini). <span class="seoSummary">Ketika panggilan fungsi terlalu banyak, atau tak ada base case dalam fungsi, JavaScript akan melempar error ini.</span></p>
+
+<h2 id="Contoh">Contoh</h2>
+
+<p>Fungsi rekursif ini berjalan 10 kali, per kondisi exit.</p>
+
+<pre class="brush: js">function loop(x) {
+ if (x &gt;= 10) // "x &gt;= 10" is the exit condition
+ return;
+ // do stuff
+ loop(x + 1); // the recursive call
+}
+loop(0);</pre>
+
+<p>Mengeset kondisi ini ke nilai extrem sangat tinggi, tak akan jalan:</p>
+
+<pre class="brush: js example-bad">function loop(x) {
+ if (x &gt;= 1000000000000)
+ return;
+ // do stuff
+ loop(x + 1);
+}
+loop(0);
+
+// InternalError: too much recursion</pre>
+
+<p>Fungsi rekursif ini tak punya base case. Jika tak kondisi exit, function akan memanggil dirinya sendiri terus-terusan.</p>
+
+<pre class="brush: js example-bad">function loop(x) {
+ // The base case is missing
+
+loop(x + 1); // Recursive call
+}
+
+loop(0);
+
+// InternalError: too much recursion</pre>
+
+<h2 id="Lihat_juga">Lihat juga</h2>
+
+<ul>
+ <li>{{Glossary("Rekursi")}}</li>
+ <li><a href="/en-US/docs/Web/JavaScript/Guide/Functions#Recursion">Fungsi rekursif</a></li>
+</ul>