aboutsummaryrefslogtreecommitdiff
path: root/files/he/web/javascript/reference/statements/var/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/he/web/javascript/reference/statements/var/index.html')
-rw-r--r--files/he/web/javascript/reference/statements/var/index.html171
1 files changed, 171 insertions, 0 deletions
diff --git a/files/he/web/javascript/reference/statements/var/index.html b/files/he/web/javascript/reference/statements/var/index.html
new file mode 100644
index 0000000000..64020dee3e
--- /dev/null
+++ b/files/he/web/javascript/reference/statements/var/index.html
@@ -0,0 +1,171 @@
+---
+title: var
+slug: Web/JavaScript/Reference/Statements/var
+tags:
+ - hoisted
+ - הכרזה
+ - משתנה
+translation_of: Web/JavaScript/Reference/Statements/var
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p>מילת ההצהרה <strong><code>var</code></strong> משמשת להכזרה על משתנה.</p>
+
+<div>{{EmbedInteractiveExample("pages/js/statement-var.html")}}</div>
+
+
+
+<h2 id="תחביר">תחביר</h2>
+
+<pre class="syntaxbox">var <em>varname1 [</em>= <em>value1] [</em>, <em>varname2 [</em>= <em>value2] </em><em>... [</em>, <em>varnameN [</em>= <em>valueN]]]</em>;</pre>
+
+<dl>
+ <dt><code>varnameN</code></dt>
+ <dd>שם המשתנה.</dd>
+</dl>
+
+<dl>
+ <dt><code>valueN</code></dt>
+ <dd> הערך של המשתנה.</dd>
+</dl>
+
+<h2 id="תיאור">תיאור</h2>
+
+<p>בשפת ג'אווה סקריפט אנו משתמשים במשתנים על מנת להחזיק ערכים שונים.<br>
+ הקצאת ערך למשתנה ללא הצהרה מראש הופכת אותו למשתנה כגלובלי.<br>
+ ניתן להשתמש במשתנה לפני שהוכרז, השימוש יעשה באמצעות Hoisting.</p>
+
+<p><strong>מהם ההבדלים בין משתנים מוצהרים לאלה שאינם?</strong><br>
+ 1. ראשית, משתנים מוצהרים יעשו רק את הפעולה שלשמה נוצרו, לעומת משתנים לא מוצהרים הנחשבים גלובלים.</p>
+
+<pre class="brush: js">function x() {
+ y = 1; // Throws a ReferenceError in strict mode
+ var z = 2;
+}
+
+x();
+
+console.log(y); // logs "1"
+console.log(z); // Throws a ReferenceError: z is not defined outside x
+</pre>
+
+<p>2. משתנים מוצהרים מוכרזים לפני ביצוע קוד כלשהו לעומת זאת משתנים לא מוצהרים אינם קיימים עד שהקוד שמכריז עליהם מתבצע.</p>
+
+<pre class="brush: js">console.log(a); // Throws a ReferenceError.
+console.log('still going...'); // Never executes.</pre>
+
+<pre class="brush: js">var a;
+console.log(a); // logs "undefined" or "" depending on browser.
+console.log('still going...'); // logs "still going...".</pre>
+
+<p>בשל שני ההבדלים הללו, אי הכרזה על משתנים עשויה להוביל לשגיאות בלתי צפויות.<br>
+ לכן, מומלץ תמיד להכריז על משתנים, גם אם הם נמצאים בפונקציה.</p>
+
+<h3 id="var_hoisting">var hoisting</h3>
+
+<p>זוהי התנהגות ברירת המחדל של השפה, שתפקידה להעביר את כל ההצהרות לחלק העליון של הסקריפט או הפונקציה ולכן משמעות הדבר היא שניתן להשתמש במשתנה לפני שהוכרז.</p>
+
+<pre class="brush: js">bla = 2;
+var bla;
+// ...
+
+// is implicitly understood as:
+
+var bla;
+bla = 2;
+</pre>
+
+<p>מומלץ להצהיר על משתנים בחלקו העליון של הסקריפט או הפונקציה וכך יהיה ברור אילו משתנים שייכים לפונקציה באופן מקומי ואילו גלובלים.</p>
+
+<p>חשוב לזכור ששימוש ב-Hoisting ישפיע על הצהרת המשתנה אך לא על אתחול הערך:</p>
+
+<pre class="brush: js">function do_something() {
+  console.log(bar); // undefined
+  var bar = 111;
+  console.log(bar); // 111
+}
+
+// is implicitly understood as:
+function do_something() {
+  var bar;
+  console.log(bar); // undefined
+ bar = 111;
+  console.log(bar); // 111
+}
+</pre>
+
+<h2 id="דוגמאות">דוגמאות</h2>
+
+<h3 id="הכרזה_אחת_של_שני_משתנים">הכרזה אחת של שני משתנים</h3>
+
+<pre class="brush: js" dir="rtl">var a = 0, b = 0;
+</pre>
+
+<h3 id="הקצאת_שני_משתנים_עם_ערך_מחרוזת_יחיד">הקצאת שני משתנים עם ערך מחרוזת יחיד</h3>
+
+<pre class="brush: js">var a = 'A';
+var b = a;
+
+// Equivalent to:
+
+var a, b = a = 'A';
+</pre>
+
+<h3 id="משתנה_מקומי_וגלובלי">משתנה מקומי וגלובלי</h3>
+
+<pre class="brush: js">var x = 0;
+
+function f() {
+ var x = y = 1; // x is declared locally. y is not!
+}
+f();
+
+console.log(x, y); // Throws a ReferenceError in strict mode (y is not defined). 0, 1 otherwise.
+// In non-strict mode:
+// x is the global one as expected
+// y leaked outside of the function, though!</pre>
+
+<h2 id="מפרט">מפרט</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Specification</th>
+ <th scope="col">Status</th>
+ <th scope="col">Comment</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES1')}}</td>
+ <td>{{Spec2('ES1')}}</td>
+ <td>Initial definition. Implemented in JavaScript 1.0</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES5.1', '#sec-12.2', 'var statement')}}</td>
+ <td>{{Spec2('ES5.1')}}</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES6', '#sec-variable-statement', 'variable statement')}}</td>
+ <td>{{Spec2('ES6')}}</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-variable-statement', 'variable statement')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="תאימות_דפדפן">תאימות דפדפן</h2>
+
+
+
+<p>{{Compat("javascript.statements.var")}}</p>
+
+<h2 id="ראה_גם">ראה גם</h2>
+
+<ul>
+ <li><a href="https://developer.mozilla.org/he/docs/Web/JavaScript/Reference/Statements/let"><code>let</code></a></li>
+ <li><a href="https://developer.mozilla.org/he/docs/Web/JavaScript/Reference/Statements/const"><code>const</code></a></li>
+</ul>