جاوا اسکرپٹ دے قواعد

**جاوا سکرپٹ دے قواعد** دے تحت انہاں قواعد دا احاطہ کیتا جاندا اے جنہاں دے ذریعہ جاوا سکرپٹ پروگرام نو‏‏ں درست تے غلطیاں تو‏ں پاک بنایا جاس دے۔
تھلے پیش کردہ مثالاں وچ alert فنکشن استعمال کیتا گیا ا‏‏ے۔ دراصل جاوا سکرپٹ د‏‏ی معیاری لائبریری وچ ایسا فنکشن موجود نئيں جس دے ذریعہ ٹیکسٹ دکھایا جائے۔ لیکن چونکہ جاوا سکرپٹ اس وقت اکثر ویب براؤزز وچ کلائنٹ سائڈ سکرپٹنگ دے لئی استعمال ہو رہی اے تے تقریبا تمام ہی براؤزرز وچ alert فنکشن د‏‏ی سہولت موجود ہُندی اے، اس لئی انہاں مثالاں وچ اس فنکشن نو‏‏ں استعمال کیتا گیا ا‏‏ے۔

## آغاز
برنڈن ایچ نے جاوا سکرپٹ پروگرامنگ زبان دے ورژن 1٫1 د‏‏ی خصوصیات دا اس طرح خلاصہ پیش کیتا سی:

## مقدمات
### حرفی حساسیت
جاوا سکرپٹ بولی چھوٹے تے وڈے حروف دے ضمن وچ حساس (sensitive) ا‏‏ے۔ چناں چہ عموماً Constructor نو‏‏ں وڈے حروف وچ تے فنکشن دے ناواں نو‏‏ں چھوٹے حروف وچ لکھنے دا رواج ا‏‏ے۔

### ناں فضا تے سیمی کولن
سٹرنگ دے باہر ٹیبز، سپیس تے نويں سطراں دے استعمال نو‏‏ں وہائٹ سپیس (White space) کہیا جاندا ا‏‏ے۔ سی ورگی زباناں دے برخلاف جاوا سکرپٹ وہائٹ سپیس دے حق وچ حساس واقع ہوئی اے، چناں چہ سیمی کولن دا عدم استعمال یا غلط استعمال براہ راست پروگرام اُتے اثر انداز ہو سکدا اے تے ایرر آ سکدا ا‏‏ے۔ درج ذیل مثالاں ملاحظہ کرن:

```javascript
a = b + c
(d + e).foo()

// Treated as:
// a = b + c(d + e).foo();
```


لیکن

```javascript
a = b + c
;(d + e).foo()

// Treated as:
// a = b + c;
// (d + e).foo();
```



```javascript
return
a + b;

// Returns undefined. Treated as:
// return;
// a + b;
// Should be written as:
// return a + b;
```


### تبصرے
جاوا سکرپٹ وچ تبصرے درج کرنے دا انداز بالکل سی پلس پلس تے ہور زباناں ہی د‏‏ی طرح ا‏‏ے۔

```javascript
// a short, one-line comment

/* this is a long, multi-line comment
 about my script. May it one day
 be great. */

/* Comments /* may not be nested */ Syntax error */
```


## متغیرات
جاوا سکرپٹ دے متغیرات (Variables) وچ معلومات درج کرنے دے دوران ٹائپ نئيں لکھیا جاندا، ہور انہاں متغیرات وچ ہر قسم د‏‏ی معلومات نو‏‏ں رکھیا جاسکدا ا‏‏ے۔ نويں متغیرات درج کرنے دے لئی نويں سطر دے آغاز وچ `var` تحریر کردے نيں تے فیر متغیر دا ناں دتا جاندا اے، ہور اک ہی وقت وچ متعدد متغیرات وی دتے جا سکدے نيں۔
ان متغیرات وچ خصوصی علامات مثلاً #،٪ وغیرہ استعمال نئيں کيت‏‏ی جاسکتاں، ہور جاوا سکرپٹ بولی دے کچھ مخصوص لفظاں نيں جداں default, while, do, break وغیرہ، انہاں نو‏ں وی استعمال نئيں کیتا جاسکدا۔

### مثالاں
ذیل وچ متغیرات د‏‏ی مثال ملاحظہ کرن:

```javascript
var x = 0; // A global variable, because it is not in any function

function f() {
 var z = 'foxes', r = 'birds'; // 2 local variables
 m = 'fish'; // global, because it wasn't declared anywhere before

 function child() {
 var r = 'monkeys'; // This variable is local and does not affect the "birds" r of the parent function.
 z = 'penguins'; // Closure: Child function is able to access the variables of the parent function.
 }

 twenty = 20; // This variable is declared on the next line, but usable anywhere in the function, even before, as here
 var twenty;

 child();
 return x; // We can use x here, because it is global
}

f();

alert(z); // This line will raise a ReferenceError exception, because the value of z is no longer available
```


## ڈیٹا ٹائپس
جاوا سکرپٹ دے متغیرات وچ مختلف قسماں دے ڈیٹا ٹائپس رکھے جاسکدے نيں، مثلاً اعداد، سٹرنگز، ایرے وغیرہ۔

### غیر تعریف شدہ
غیر تعریف شدہ (Undefined) ڈیٹا ٹائپ انہاں متغیرات نو‏‏ں کہیا جاندا اے جنہاں نو‏ں initialize نہ کیتا گیا ہو، یعنی انہاں نو‏ں کوئی ویلیو نہ دتی گئی ا‏‏ے۔ بولین (Boolean) ڈیٹا ٹائپ وچ اس طرح دے متغیرات نا درست (false) سمجھ‏‏ے جاندے نيں۔


```javascript
var test; // variable declared, but not defined, ...
 // ... set to value of undefined
var testObj = {};
alert(test); // test variable exists, but value not ...
 // ... defined, displays undefined
alert(testObj.myProp); // testObj exists, property does not, ...
 // ... displays undefined
alert(undefined == null); // unenforced type during check, displays true
alert(undefined === null); // enforce type during check, displays false
```

واضح رہے کہ جاوا سکرپٹ وچ غیر تعریف شدہ ناں تو‏ں کوئی ٹائپ نئيں بنائی گئی اے، چناں چہ `(x == undefined)` نو‏‏ں ایہ جانچنے دے لئی استعمال کرنا کہ متغیر نو‏‏ں کوئی ویلیو دتی گئی اے یا نئيں، کوئی بہت زیادہ درست طریقہ نئيں ا‏‏ے۔ کیونکہ ECMAScript 5 تو‏ں پہلے اس `var undefined = "I'm defined now";` طرح لکھنا بالکل درست سی ۔ بلکہ زیادہ بہتر ایہ اے کہ اس مقصد دے لئی `(typeof x === 'undefined')` نو‏‏ں استعمال کیتا جائے۔

اس قسم دے فنکشنز مطلوبہ کم انجام نئيں دیندے:

```javascript
function isUndefined(x) { var u; return x === u; } // like this...
function isUndefined(x) { return x === void 0; } // ... or that second one
function isUndefined(x) { return (typeof x) === undefined"; } // ... or that third one
```


### نل (null)
غیر تعریف شدہ دے برخلاف، نل ویلیو اکثر اس گل دا اشارہ کردی اے کہ جو بیان کیتا گیا اے اوہ خالی ا‏‏ے۔ بولین (Boolean) وچ نل false value سمجھی جاندی ا‏‏ے۔


```javascript
alert(null == undefined); // unenforced type during check, displays true
alert(null === undefined); // enforce type during check, displays false
alert(typeof null === 'object'); // true
```


### سٹرنگز
جملاں نو‏‏ں سٹرنگ کہیا جاندا ا‏‏ے۔ جاوا سکرپٹ وچ سٹرنگ نو‏‏ں واوین (double یا single quotes) وچ رکھیا جاندا ا‏‏ے۔

```javascript
var greeting = "Hello, World!";
var anotherGreeting = 'Greetings, people of Earth.';
```

انفرادی حروف نو‏‏ں دکھانے دے لئی  طریقہ (جو  فراہ‏م کردا اے ) استعمال کیتا جا سکدا ا‏‏ے۔ کسی وی سٹرنگ وچ کسی انفرادی حرف تک رسائی پانے دے لئی ایہ راجح طریقہ اے کیونکہ ایہ غیر معیاری براؤزرز وچ وی کم کردا ا‏‏ے۔

```javascript
var h = greeting.charAt(0);
```

جدید معیاری براؤزرز وچ اس کم دے لئی دوسرا متبادل طریقہ وی استعمال کیتا جاسکدا اے (ایہی طریقہ ایرے وچ وی استعمال کیتا جاندا اے )۔

```javascript
var h = greeting[0];
```

واضح رہے کہ اس انداز وچ سٹرنگ دے حروف نو‏‏ں حاصل نئيں کیتا جا سکدا:

```javascript
greeting[0] = "H"; // Fails.
```


برابر دے نشان (==) دے ذریعہ ایہ معلوم کیتا جا سکدا اے کہ آیا دونے سٹرنگز دے حروف نوع تے لمبائی دے لحاظ تو‏ں یکساں اے یا نئيں۔


```javascript
var x = "World";
var compare1 = ("Hello, " +x == Hello, World"); // Here compare1 contains true.
var compare2 = ("Hello, " +x == hello, World"); // Here compare2 contains ...
 // ... false since the ...
 // ... first characters ...
 // ... of both operands ...
 // ... are not of the same case.
```


واوین دے اندر واوین نئيں استعمال کیتے جاسکدے نيں، جدو‏ں تک انہاں نو‏ں escape نہ کیتا جائے:

```javascript
var x = '"Hello, World!" he said.' // Just fine.
var x = ""Hello, World!" he said." // Not good.
var x = "\"Hello, World!\" he said." // That works by replacing " with \"
```


ہور  کنسٹرکٹر دے ذریعہ وی سٹرنگ بنائی جاسکدی اے:

```javascript
var greeting = new String("Hello, World!");
```


 دے ذریعہ سٹرنگ آبجیکٹ د‏‏ی primitive ویلیو معلوم د‏‏ی جاسکدی ا‏‏ے۔

```javascript
var s = new String("Hello!");
typeof s; // Is 'object'.
typeof s.valueOf(); // Is 'string'.
```


واضح رہے کہ دو سٹرنگ آبجیکٹ دے درمیان یکسانی سٹرنگز دے درمیان عمومی یکسانی د‏‏ی طرح نئيں ہُندی۔

```javascript
var s1 = new String("Hello!");
var s2 = new String("Hello!");
s1 == s2; // Is false, because they are two distinct objects.
s1.valueOf() == s2.valueOf(); // Is true.
```


## حوالے

## باہرلے جوڑ

* A re-introduction to JavaScript – Mozilla Developer Center
* Comparison Operators in JavaScript 
* ECMAScript standard references: ECMA-262
* Interactive JavaScript Lessons – example-based
* JavaScript on About.com: lessons and explanation 
* JavaScript Training 
* Mozilla Developer Center Core References for JavaScript versions 1.5, 1.4, 1.3 and 1.2
* Mozilla JavaScript Language Documentation

گٹھ:جاوا سکرپٹ
گٹھ:سافٹ ویئر