JavaScript ਮਿਸਲਤ ਦੌਰਾਨ ਭੁਲ

ਇਸ ਅਧਿਆਏ ਵਿੱਚ ਆਮ ਜ਼ਿਕਰਣਾਂ ਦੀਆਂ ਗਲਤੀਆਂ ਦਿਸਾਈ ਗਈਆਂ ਹਨ

ਅਣਚਾਹੀ ਸ਼ਾਮਲ ਕਰਨ

ਜੇਕਰ ਪ੍ਰੋਗਰਾਮਰ if ਵਿੱਚ ਅਣਚਾਹੀ ਸ਼ਾਮਲ ਕਰਨ ਦੀ ਗਲਤੀ ਹੁੰਦੀ ਹੈ=ਦੇ ਬਜਾਏ ਤੁਲਨਾ ਅਪਣਾਤਰ (=====ਅਤੇ ਜ਼ਿਕਰਣਾਂ ਵਿੱਚ ਅਨਿਸ਼ਚਿਤ ਨਤੀਜੇ ਪੈਦਾ ਕਰ ਸਕਦੇ ਹਨ。

ਇਹ if ਸਿਫਾਰਸ਼ ਵਾਪਸ ਦਿੰਦੀ ਹੈ falseਸ਼ਾਇਦ ਉਮੀਦ ਕੀਤੀ ਗਈ ਤਰ੍ਹਾਂ ਹੈ, ਕਿਉਂਕਿ x 10 ਨਹੀਂ ਹੈ

var x = 0;
if (x == 10) 

ਆਪਣੇ ਤੌਰ 'ਤੇ ਪ੍ਰਯੋਗ ਕਰੋ

ਇਹ if ਸਿਫਾਰਸ਼ ਵਾਪਸ ਦਿੰਦੀ ਹੈ trueਸ਼ਾਇਦ ਉਮੀਦ ਨਹੀਂ ਕੀਤੀ ਗਈ ਤਰ੍ਹਾਂ ਹੈ, ਕਿਉਂਕਿ 10 ਸਹੀ ਹੈ

var x = 0;
if (x = 10) 

ਆਪਣੇ ਤੌਰ 'ਤੇ ਪ੍ਰਯੋਗ ਕਰੋ

ਇਹ if ਸਿਫਾਰਸ਼ ਵਾਪਸ ਦਿੰਦੀ ਹੈ falseਸ਼ਾਇਦ ਉਮੀਦ ਨਹੀਂ ਕੀਤੀ ਗਈ ਤਰ੍ਹਾਂ ਹੈ, ਕਿਉਂਕਿ 0 ਗਲਤ ਸਮਝਾਉਣ ਵਾਲਾ ਹੈ

var x = 0;
if (x = 0) 

ਆਪਣੇ ਤੌਰ 'ਤੇ ਪ੍ਰਯੋਗ ਕਰੋ

ਅਸਲ ਮੁੱਲ ਵਾਪਸ ਦਿੰਦੀ ਹੈ

ਉਮੀਦ ਕੀਤੀ ਗਈ ਅਸੰਕਲਪਿਤ ਤੁਲਨਾ

ਆਮ ਤੌਰ 'ਤੇ ਤੁਲਨਾ ਵਿੱਚ, ਦਾਤਾ ਕਿਸਮ ਮਹੱਤਵਪੂਰਨ ਨਹੀਂ ਹੁੰਦਾ ਹੈ। ਇਹ if ਸਿਫਾਰਸ਼ ਵਾਪਸ ਦਿੰਦੀ ਹੈ true

var x = 10;
var y = "10";
if (x == y) 

ਆਪਣੇ ਤੌਰ 'ਤੇ ਪ੍ਰਯੋਗ ਕਰੋ

ਸਖਤ ਤੌਰ 'ਤੇ ਤੁਲਨਾ ਵਿੱਚ, ਦਾਤਾ ਕਿਸਮ ਤੁਰੰਤ ਮਹੱਤਵਪੂਰਨ ਹੁੰਦਾ ਹੈ। ਇਹ if ਸਿਫਾਰਸ਼ ਵਾਪਸ ਦਿੰਦੀ ਹੈ false

var x = 10;
var y = "10";
if (x === y) 

ਆਪਣੇ ਤੌਰ 'ਤੇ ਪ੍ਰਯੋਗ ਕਰੋ

ਇੱਕ ਆਮ ਗਲਤੀ ਇਹ ਹੈ ਕਿ switch ਸਿਫਾਰਸ਼ ਵਿੱਚ ਸਖਤ ਤੌਰ 'ਤੇ ਤੁਲਨਾ ਕਰੋ:

ਇਹ switch ਸਿਫਾਰਸ਼ ਦਿਖਾਈ ਰਹੇ ਪੈਨਲ:

var x = 10;
switch(x) {
    case 10: alert("Hello");
}

ਆਪਣੇ ਤੌਰ 'ਤੇ ਪ੍ਰਯੋਗ ਕਰੋ

ਇਹ switch ਸਿਫਾਰਸ਼ ਨਹੀਂ ਦਿਖਾਈ ਰਹੇ ਪੈਨਲ:

var x = 10;
switch(x) {
    case "10": alert("Hello");
}

ਆਪਣੇ ਤੌਰ 'ਤੇ ਪ੍ਰਯੋਗ ਕਰੋ

ਗਲਤ ਸਮਝਾਉਣ ਵਾਲਾ ਜੋੜਨ ਅਤੇ ਜੋੜਨ

ਜੋੜਨਜੋੜਨ ਲਈ ਵਰਤੇ ਜਾਂਦੇ ਹਨਮੁੱਲ

ਜੋੜਨ (Concatenation)ਜੋੜਨ ਲਈ ਵਰਤੇ ਜਾਂਦੇ ਹਨਸਟਰਿੰਗ

ਜ਼ਿਕਰਣਾਂ ਵਿੱਚ, ਇਹ ਦੋਵੇਂ ਅਪਣਾਤਰ ਇੱਕ ਹੀ ਵਿਧੀ ਨਾਲ ਵਰਤੇ ਜਾਂਦੇ ਹਨ + ਆਪਣਾਤਰ

ਇਸ ਲਈ, ਨੰਬਰ ਨੂੰ ਮੁੱਲ ਦੇ ਰੂਪ ਵਿੱਚ ਜੋੜਨ ਅਤੇ ਨੰਬਰ ਨੂੰ ਸਟਰਿੰਗ ਦੇ ਰੂਪ ਵਿੱਚ ਜੋੜਨ, ਵੱਖ-ਵੱਖ ਨਤੀਜੇ ਪੈਦਾ ਕਰਦੇ ਹਨ:

var x = 10 + 5;          // x ਵਿੱਚ ਨਤੀਜਾ 15 ਹੋਵੇਗਾ
var x = 10 + "5";         // x ਵਿੱਚ ਨਤੀਜਾ "105" ਹੋਵੇਗਾ

ਆਪਣੇ ਤੌਰ 'ਤੇ ਪ੍ਰਯੋਗ ਕਰੋ

ਜੇਕਰ ਦੋ ਵਾਰੀਆਂ ਮਾਪਦੰਡ ਸਮਾਂਤਰਤ ਕੀਤੇ ਜਾਣ, ਤਾਂ ਨਤੀਜਾ ਅਨਿਸ਼ਚਿਤ ਹੋ ਸਕਦਾ ਹੈ:

var x = 10;
var y = 5;
var z = x + y;            // z ਵਿੱਚ ਨਤੀਜਾ 15 ਹੋਵੇਗਾ
var x = 10;
var y = "5";
var z = x + y;            // z ਵਿੱਚ ਨਤੀਜਾ "105" ਹੋਵੇਗਾ

ਆਪਣੇ ਤੌਰ 'ਤੇ ਪ੍ਰਯੋਗ ਕਰੋ

ਗਲਤ ਸਮਝਾਉਣ ਵਾਲੇ ਫਲੌਟਿੰਗ ਪੁਆਇੰਟ

ਜ਼ਿਕਰਣਾਂ ਵਿੱਚ ਸਾਰੇ ਨੰਬਰ 64 ਬਿਟ ਦੇ ਰੂਪ ਵਿੱਚ ਸੰਭਾਲੇ ਜਾਂਦੇ ਹਨਫਲਾਈਟਿੰਗ ਅੰਕ (Floats)

ਸਾਰੇ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ, ਜਿਸ ਵਿੱਚ JavaScript ਵੀ ਸ਼ਾਮਿਲ ਹੈ, ਫਲਾਈਟਿੰਗ ਅੰਕਾਂ ਦੀ ਹੱਲ ਕਰਨ ਵਿੱਚ ਕਠਿਨਾਈ ਹੈ

ਵਾਰ ਐਕਸ = 0.1;
ਵਾਰ ਯ = 0.2;
ਵਾਰ ਜ਼ੀ = ਐਕਸ + ਯ             // ਜ਼ੀ ਵਿੱਚ ਨਤੀਜਾ 0.3 ਨਹੀਂ ਹੋਵੇਗਾ

ਆਪਣੇ ਤੌਰ 'ਤੇ ਪ੍ਰਯੋਗ ਕਰੋ

ਉੱਪਰੋਕਤ ਸਮੱਸਿਆ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਗੁਣਨ ਅਤੇ ਵਿਭਾਜਨ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ:

ਇੰਸਟੈਂਸ

ਵਾਰ ਜ਼ੀ = (ਐਕਸ * 10 + ਯ * 10) / 10;       // ਜ਼ੀ ਵਿੱਚ ਨਤੀਜਾ 0.3 ਹੋਵੇਗਾ

ਆਪਣੇ ਤੌਰ 'ਤੇ ਪ੍ਰਯੋਗ ਕਰੋ

JavaScript ਚਿੰਨ੍ਹ ਵਿੱਚ ਬਦਲਣ

JavaScript ਇੱਕ ਵਾਕ ਨੂੰ ਦੋ ਲਾਈਨਾਂ ਵਿੱਚ ਬਦਲਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ:

ਉਦਾਹਰਣ 1

ਵਾਰ ਐਕਸ =
"Hello World!";

ਆਪਣੇ ਤੌਰ 'ਤੇ ਪ੍ਰਯੋਗ ਕਰੋ

ਪਰ ਚਿੰਨ੍ਹ ਵਿੱਚ ਬਦਲਣ ਦਾ ਹੈਰਾਨੀ ਵਾਲਾ ਹੈ:

ਉਦਾਹਰਣ 2

ਵਾਰ ਐਕਸ = "Hello
World!";

ਆਪਣੇ ਤੌਰ 'ਤੇ ਪ੍ਰਯੋਗ ਕਰੋ

ਉਦਾਹਰਣ 3

ਵਾਰ ਐਕਸ = "Hello \
World!";

ਆਪਣੇ ਤੌਰ 'ਤੇ ਪ੍ਰਯੋਗ ਕਰੋ

ਗਲਤ ਸਥਿਤੀ ਵਾਲਾ ਸੈਕਸ਼ਨਲ

ਗਲਤ ਸੈਕਸ਼ਨਲ ਕਾਰਣ, ਇਹ ਕੋਡ ਬਲਾਕ x ਦੇ ਕਿਸੇ ਮੁੱਲ ਉੱਤੇ ਚਲੇਗਾ:

if (x == 19);
{
     // ਕੋਡ ਬਲਾਕ
}

ਆਪਣੇ ਤੌਰ 'ਤੇ ਪ੍ਰਯੋਗ ਕਰੋ

ਰਿਟਰਨ ਵਾਕ ਨੂੰ ਬਦਲਣ

ਇੱਕ ਲਾਈਨ ਦੇ ਅੰਤ ਉੱਤੇ ਵਾਕ ਬੰਦ ਕਰਨਾ ਜਨਰਲ ਵਜ੍ਹਾ ਨਾਲ JavaScript ਦਾ ਵਿਵਹਾਰ ਹੈ

ਇਸ ਲਈ, ਹੇਠਲੇ ਦੋ ਉਦਾਹਰਣ ਇਸੇ ਨਤੀਜੇ ਨੂੰ ਰਿਟਰਨ ਕਰਦੇ ਹਨ:

ਉਦਾਹਰਣ 1

ਫੰਕਸ਼ਨ ਮਾਈਫੰਕਸ਼ਨ(ਏ) {
    ਵਾਰ ਪਾਵਰ = 10  
    ਰਿਟਰਨ ਏ * ਪਾਵਰ
}

ਆਪਣੇ ਤੌਰ 'ਤੇ ਪ੍ਰਯੋਗ ਕਰੋ

ਉਦਾਹਰਣ 2

ਫੰਕਸ਼ਨ ਮਾਈਫੰਕਸ਼ਨ(ਏ) {
    ਵਾਰ ਪਾਵਰ = 10;
    ਰਿਟਰਨ ਏ * ਪਾਵਰ;
}

ਆਪਣੇ ਤੌਰ 'ਤੇ ਪ੍ਰਯੋਗ ਕਰੋ

JavaScript ਇੱਕ ਵਾਕ ਨੂੰ ਦੋ ਲਾਈਨਾਂ ਵਿੱਚ ਬਦਲਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ

ਇਸ ਲਈ, ਉਦਾਹਰਣ 3 ਵੀ ਇਸੇ ਨਤੀਜੇ ਨੂੰ ਰਿਟਰਨ ਕਰੇਗਾ:

ਉਦਾਹਰਣ 3

ਫੰਕਸ਼ਨ ਮਾਈਫੰਕਸ਼ਨ(ਏ) {
    ਵਾਰ
    ਪਾਵਰ = 10;  
    ਰਿਟਰਨ ਏ * ਪਾਵਰ;
}

ਆਪਣੇ ਤੌਰ 'ਤੇ ਪ੍ਰਯੋਗ ਕਰੋ

ਪਰ ਜੇਕਰ ਇਹ ਕਰਨ ਵਾਲਾ ਵਾਕ ਬੰਦ ਕਰਨ ਵਾਲਾ ਹੈ: ਰਿਟਰਨ ਵਾਕ ਬਦਲਣ ਨੂੰ ਦੋ ਲਾਈਨਾਂ ਵਿੱਚ ਕਿਵੇਂ ਹੋਵੇਗਾ:

ਉਦਾਹਰਣ 4

ਫੰਕਸ਼ਨ ਮਾਈਫੰਕਸ਼ਨ(ਏ) {
    ਵਾਰ
    ਪਾਵਰ = 10;  
    ਰਿਟਰਨ
    ਏ * ਪਾਵਰ;
}

ਆਪਣੇ ਤੌਰ 'ਤੇ ਪ੍ਰਯੋਗ ਕਰੋ

ਇਹ ਫੰਕਸ਼ਨ ਰਿਟਰਨ ਕਰੇਗਾ undefined!

ਕਿਉਂ? ਕਿਉਂਕਿ JavaScript ਤੁਹਾਡੀ ਇੱਛਾ ਨੂੰ ਮੰਨਦਾ ਹੈ:

ਉਦਾਹਰਣ 5

ਫੰਕਸ਼ਨ ਮਾਈਫੰਕਸ਼ਨ(ਏ) {
     ਵਾਰ
    ਪਾਵਰ = 10;  
    ਰਿਟਰਨ;
    ਏ * ਪਾਵਰ;
}

ਆਪਣੇ ਤੌਰ 'ਤੇ ਪ੍ਰਯੋਗ ਕਰੋ

ਵਿਆਖਿਆ

ਜੇਕਰ ਕੋਈ ਵਾਕ ਅਧੂਰਾ ਹੈ ਤਾਂ:

ਵਾਰ

JavaScript ਅਗਲੀ ਲਾਈਨ ਨੂੰ ਪੜ੍ਹਦੇ ਹੋਏ ਇਹ ਵਾਕ ਪੂਰਾ ਕਰ ਦੇਵੇਗਾ:

ਪਾਵਰ = 10;

ਪਰ ਇਹ ਵਾਕ ਪੂਰਾ ਹੈ:

ਰਿਟਰਨ

JavaScript ਇਹ ਵਾਕ ਆਪਣੇ ਹੀ ਬੰਦ ਕਰ ਦੇਵੇਗਾ:

ਰਿਟਰਨ;

ਇਹ ਹੋਣ ਕਾਰਨ ਇਹ ਹੈ ਕਿ JavaScript ਵਿੱਚ ਵਾਕ ਬੰਦ ਕਰਨ ਲਈ ਸੈਕਸ਼ਨਲ ਨੂੰ ਵਾਲਟਿਲ ਹੈ

JavaScript ਵਾਕ ਦੇ ਅੰਤ ਉੱਤੇ ਬੰਦ ਕਰਦਾ ਹੈ ਰਿਟਰਨ ਵਾਕਯ ਦੇ ਹੀ ਹੈ ਕਿਉਂਕਿ ਇਹ ਹੀ ਇੱਕ ਪੂਰਾ ਵਾਕਯ ਹੈ

ਕੋਈ ਵੀ ਵਾਕਯ ਉੱਤੇ ਨਾ ਕਰਨ ਰਿਟਰਨ ਵਾਕਯ ਨੂੰ ਬਦਲਣ ਲਈ

ਇੱਕ ਸੂਚੀ ਨੂੰ ਨਾਮ ਸੂਚਕਾਂ ਰਾਹੀਂ ਪਹੁੰਚ ਸਕਦੇ ਹਨ

بسیاری از زبان‌های برنامه‌نویسی از آرایه‌هایی با شماره‌گذاری نامی پشتیبانی می‌کنند.

آرایه‌هایی با شماره‌گذاری نامی به عنوان آرایه‌های مرتبط (یا هش) شناخته می‌شوند.

JavaScript پشتیبانی نمی‌شودآرایه‌هایی با شماره‌گذاری نامی

در JavaScript،آرایهاستفاده ازشماره‌گذاری عددی

ਇੰਸਟੈਂਸ

var person = [];
person[0] = "Bill";
person[1] = "Gates";
person[2] = 46;
var x = person.length;          // person.length 3 خواهد برگرداند
var y = person[0];              // person[0] "Bill" خواهد برگرداند

ਆਪਣੇ ਤੌਰ 'ਤੇ ਪ੍ਰਯੋਗ ਕਰੋ

در JavaScript،شیءاستفاده ازشماره‌گذاری نامی

اگر از شماره‌گذاری نامی استفاده کنید، هنگام دسترسی به آرایه، JavaScript آرایه را به یک شیء استاندارد تعریف مجدد خواهد کرد.

در پس از تعریف مجدد خودکار، روش‌ها یا ویژگی‌های آرایه ممکن است نتایج تعریف نشده یا نادرست تولید کنند:

ਇੰਸਟੈਂਸ

var person = [];
person["firstName"] = "Bill";
person["lastName"] = "Gates";
person["age"] = 46;
var x = person.length;         // person.length 0 خواهد برگرداند
var y = person[0];              // person[0] undefined خواهد برگرداند

ਆਪਣੇ ਤੌਰ 'ਤੇ ਪ੍ਰਯੋਗ ਕਰੋ

از کاما برای پایان تعریف استفاده کنید

کاما در تعریف شیء و آرایه در ECMAScript 5 مجاز است.

مثال یک شیء:

person = {firstName:"Bill", lastName:"Gates", age:62,};

مثال یک آرایه:

points = [35, 450, 2, 7, 30, 16,];

اخطار!!

Internet Explorer 8 خواهد شکست.

JSON اجازه نمی‌دهد که کاما در انتهای جمله باشد.

JSON:

person = {firstName:"Bill", lastName:"Gates", age:62};

JSON:

points = [35, 450, 2, 7, 30, 16];

Undefined نه Null

شیء JavaScript، متغیر، ویژگی و روش‌ها می‌تواند تعریف نشده باشند.

به علاوه، مقادیر یک شیء خالی JavaScript می‌تواند null

این ممکن است تعیین اینکه آیا اشیاء تست شده خالی هستند یا خیر کمی دشوار باشد.

شما می‌توانید نوع را بررسی کنید که آیا آن یک undefined،آیا اشیاء موجود هستند یا خیر؟

ਇੰਸਟੈਂਸ

if (typeof myObj === "undefined")

ਆਪਣੇ ਤੌਰ 'ਤੇ ਪ੍ਰਯੋਗ ਕਰੋ

ਪਰ ਤੁਸੀਂ ਆਬਜੈਕਟ ਗੁੰਮ ਹੋਣ ਨਾ ਹੋਣ ਦੇ ਪ੍ਰੀਖਣ ਨਹੀਂ ਕਰ ਸਕਦੇ null، ਕਿਉਂਕਿ ਆਬਜੈਕਟ ਗੁੰਮ ਹੋਣ ਤੋਂ ਗਲਤੀ ਫੈਲੇਗੀ:

ਗਲਤ:

if (myObj === null)

ਇਸ ਸਮੱਸਿਆ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਆਬਜੈਕਟ ਨੂੰ null ਹੈ ਨਾ ਹੈ ਦੇ ਪ੍ਰੀਖਣ ਕਰਨਾ ਹੋਵੇਗਾ null، ਨਹੀਂ ਗੁੰਮ ਹੋਈ।

ਲੇਕਿਨ ਇਹ ਵੀ ਗਲਤੀ ਪੈਦਾ ਕਰੇਗਾ:

ਗਲਤ:

if (myObj !== null && typeof myObj !== "undefined")

ਇਸ ਲਈ, ਨਲਕ ਪਹਿਲਾਂ ਤੋਂ ਟੈਸਟ ਕਰਨੇ ਹੋਣਗੇ:

ਸਹੀ:

if (typeof myObj !== "undefined" && myObj !== null)

ਆਪਣੇ ਤੌਰ 'ਤੇ ਪ੍ਰਯੋਗ ਕਰੋ

ਬਲਾਕ ਲੈਵਲ ਦਾ ਦਾਇਰਾ ਚਾਹੁੰਦਾ ਹੈ

JavaScript ਨਹੀਂਹਰੇਕ ਕੋਡ ਬਲਾਕ ਲਈ ਨਵਾਂ ਦਾਇਰਾ ਬਣਾਉਂਦਾ ਹੈ。

ਬਹੁਤ ਸਾਰੇ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਇਹ ਹੈ, ਲੇਕਿਨ JavaScript ਨਹੀਂ ਹੈ

ਮੰਨਣਾ ਹੈ ਕਿ ਇਹ ਕੋਡ ਇਹ ਵਾਪਸ ਦੇਵੇਗਾ undefined، ਨਵੇਂ JavaScript ਵਿਕਾਸਕਾਰ ਦਾ ਸਭ ਤੋਂ ਆਮ ਗਲਤੀ ਹੈ:

ਇੰਸਟੈਂਸ

for (var i = 0; i < 10; i++) {
  // ਕੋਡ ਬਲਾਕ
}
return i;

ਆਪਣੇ ਤੌਰ 'ਤੇ ਪ੍ਰਯੋਗ ਕਰੋ