JavaScript ਮਿਸਲਤ ਦੌਰਾਨ ਭੁਲ
- ਪਿਛਲਾ ਪੰਨਾ JS ਬੈਸਟ ਪ੍ਰੈਕਟਿਸ
- ਅਗਲਾ ਪੰਨਾ JS ਪ੍ਰਦਰਸ਼ਨ
ਇਸ ਅਧਿਆਏ ਵਿੱਚ ਆਮ ਜ਼ਿਕਰਣਾਂ ਦੀਆਂ ਗਲਤੀਆਂ ਦਿਸਾਈ ਗਈਆਂ ਹਨ
ਅਣਚਾਹੀ ਸ਼ਾਮਲ ਕਰਨ
ਜੇਕਰ ਪ੍ਰੋਗਰਾਮਰ 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;
- ਪਿਛਲਾ ਪੰਨਾ JS ਬੈਸਟ ਪ੍ਰੈਕਟਿਸ
- ਅਗਲਾ ਪੰਨਾ JS ਪ੍ਰਦਰਸ਼ਨ