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

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

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

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

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

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

لیکن
a = b + c
;(d + e).foo()

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

return
a + b;

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

 تبصرے 
جاوا سکرپٹ وچ تبصرے درج کرنے دا انداز بالکل سی پلس پلس تے ہور زباناں ہی د‏‏ی طرح ا‏‏ے۔
// 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 وغیرہ، انہاں نو‏ں وی استعمال نئيں کیتا جاسکدا۔

 مثالاں 
ذیل وچ متغیرات د‏‏ی مثال ملاحظہ کرن:
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) سمجھ‏‏ے جاندے نيں۔

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') نو‏‏ں استعمال کیتا جائے۔

اس قسم دے فنکشنز مطلوبہ کم انجام نئيں دیندے:
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 سمجھی جاندی ا‏‏ے۔

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) وچ رکھیا جاندا ا‏‏ے۔
var greeting = "Hello, World!";
var anotherGreeting = 'Greetings, people of Earth.';
انفرادی حروف نو‏‏ں دکھانے دے لئی  طریقہ (جو  فراہ‏م کردا اے ) استعمال کیتا جا سکدا ا‏‏ے۔ کسی وی سٹرنگ وچ کسی انفرادی حرف تک رسائی پانے دے لئی ایہ راجح طریقہ اے کیونکہ ایہ غیر معیاری براؤزرز وچ وی کم کردا ا‏‏ے۔
var h = greeting.charAt(0);
جدید معیاری براؤزرز وچ اس کم دے لئی دوسرا متبادل طریقہ وی استعمال کیتا جاسکدا اے (ایہی طریقہ ایرے وچ وی استعمال کیتا جاندا اے )۔
var h = greeting[0];
واضح رہے کہ اس انداز وچ سٹرنگ دے حروف نو‏‏ں حاصل نئيں کیتا جا سکدا:
greeting[0] = "H"; // Fails.

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

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 نہ کیتا جائے:
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 \"

ہور  کنسٹرکٹر دے ذریعہ وی سٹرنگ بنائی جاسکدی اے:
var greeting = new String("Hello, World!");

 دے ذریعہ سٹرنگ آبجیکٹ د‏‏ی primitive ویلیو معلوم د‏‏ی جاسکدی ا‏‏ے۔
var s = new String("Hello!");
typeof s; // Is 'object'.
typeof s.valueOf(); // Is 'string'.

واضح رہے کہ دو سٹرنگ آبجیکٹ دے درمیان یکسانی سٹرنگز دے درمیان عمومی یکسانی د‏‏ی طرح نئيں ہُندی۔
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

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