คุณรู้จักสิ่งที่น่าสนใจเหล่านี้ใน Javascript หรือไม่?

Nov 29 2022
1. ทำไมผลลัพธ์ของโค้ดต่อไปนี้จึงแปลก ? คุณอาจมีคำถามว่าเหตุใดจึงแปลงเป็น 0 เท่านั้น เนื่องจากในจาวาสคริปต์ตัวดำเนินการอัลกอริทึมการเปรียบเทียบได้รับการออกแบบในลักษณะที่จะแปลงค่าที่ไม่ใช่ตัวเลขเป็นค่าตัวเลข

1. ทำไมผลลัพธ์ของโค้ดต่อไปนี้จึงแปลก ?

console.log(null > 0);   // false
console.log(null === 0); // false
console.log(null >= 0);  // true

คุณอาจมีคำถามว่าเหตุใดจึงแปลงเป็น 0 เท่านั้น เนื่องจากในจาวาสคริปต์ตัวดำเนินการอัลกอริทึมการเปรียบเทียบได้รับการออกแบบในลักษณะที่จะแปลงค่าที่ไม่ใช่ตัวเลขเป็นค่าตัวเลข ในนั้น มันจะแปลงค่าบูลีน (จริงหรือเท็จ) เป็น 1 และ 0, null เป็น 0 และ undefined เป็นเท็จ คุณสามารถอ้างอิงเพิ่มเติมได้ที่นี่

เพื่อสรุปสิ่งนี้ เราสามารถพูดได้ว่าสำหรับคำสั่งแรก null > 0 แทนที่ภายในด้วย 0 > 0 เนื่องจากอัลกอริทึมการเปรียบเทียบจาวาสคริปต์ คำสั่งที่สอง null === 0 ให้เป็นเท็จ เพราะที่นี่เรากำลังพยายามตรวจสอบความเท่าเทียมกันของค่าว่างด้วย 0 โดยใช้ ตัวดำเนินการความเท่าเทียมกัน (==, ===)

2. คุณสามารถส่งพารามิเตอร์ได้กี่ตัวใน JSON.parse() หรือ JSON.stringify() ?

มาดูกันทีละคน

JSON.stringity():

Syntax: JSON.stringify(value, [replacer, space])

const user = {
    firstName: 'John',
    lastName: 'Williams',
    dob: "12-31-1997"
}

console.log(JSON.stringify(user));

// Output 
{"firstName":"John","lastName":"Williams","dob":"12-31-1997"}

console.log(JSON.stringify(user, ['firstName', 'lastName'], 5));

// Output

{
     "firstName": "John",
     "lastName": "Williams"
}

Syntax: JSON.parse(text, [reviver])

ในตัวอย่างข้างต้น สมมติว่าเราต้องการแปลง dob เป็นประเภท Date ก่อนที่มันจะแยกวิเคราะห์ สามารถทำได้ด้วยฟังก์ชั่นผู้ตรวจสอบด้านล่าง

const reviewer = (key, value) => {
    if (key === 'dob') {
        value = new Date(value);
    }
    return value;
}

JSON.parse(JSON.stringify(user), reviewer)

// Output

{
  dob: Wed Dec 31 1997 00:00:00 GMT+0530 (India Standard Time) {}
  firstName: "John"
  lastName: "Williams"
}

หมายความว่าการสร้างวัตถุที่ไม่ได้รับอนุญาตให้เปลี่ยนค่าคุณสมบัติ ป้องกันการเพิ่มคุณสมบัติใหม่ หรือการลบคุณสมบัติออกจากวัตถุ เรามาดูกันว่ามันทำงานอย่างไร

Object.freeze() :

มันถูกใช้เพื่อตรึงอ็อบเจกต์ในลักษณะง่ายๆ ที่เราพูดได้ว่าคุณไม่สามารถเพิ่ม ลบ หรือเปลี่ยนคุณสมบัติใดๆ ของอ็อบเจกต์ได้ นอกจากนี้ยังสามารถสรุปได้เนื่องจากวัตถุพร้อมใช้งานสำหรับวัตถุประสงค์ในการอ่านอย่างเดียว

const obj = {
  firstName: 'Richard',
  lastName: 'Williams'
}

Object.freeze(obj); // Will not allowed to change any value or to add new property in it

obj.dob = '31-12-1991'; // Will give error if use strict is applied else it ignores
obj.firstName = 'John';

console.log(obj);

// Output 

{
    firstName: 'Richard',
    lastName: 'Williams'
}

Object.seal():

หากเราต้องการให้วัตถุทำงานในลักษณะเดียวกับที่ object.freeze() ทำ แต่ค่าของคุณสมบัติของวัตถุสามารถเขียนได้ แต่ไม่สามารถเปลี่ยนแปลงต้นแบบของวัตถุได้ เราก็สามารถใช้ object.seal()

พูดง่ายๆ ก็คือ เราได้รับอนุญาตให้เปลี่ยนค่าวัตถุได้โดยใช้สิ่งนี้ แต่ไม่สามารถเพิ่มหรือลบคีย์ของวัตถุใดๆ ได้

const obj = {
  firstName: 'Richard',
  lastName: 'Williams'
}

Object.seal(obj); // Will allow to change only value of it's, can't add new property in it

obj.dob = '31-12-1991';
obj.firstName = 'John';
delete obj.firstName;


console.log(obj);

// Output 

{
    firstName: 'John',
    lastName: 'Williams'
}

  1. ในฐานะนักพัฒนา JS คุณต้องใช้ตัวลดขนาด () ที่ไหนสักแห่ง มันเป็นฟังก์ชั่นที่ดีมากจาก javascript และยังมีอีกหนึ่งฟังก์ชั่นที่ทำงานเหมือน reduce() และนั่นคือ reduceRight() แต่ความแตกต่างคือมันทำงานจากขวาไปซ้าย ในขณะที่ reduce() จะทำงานจากซ้ายไปขวา บนอาร์เรย์
  2. หากต้องการแบนจำนวน N ของอาร์เรย์ที่ซ้อนกัน คุณสามารถใช้Array.flat(Infinity )
  3. การมอบหมายการรวมศูนย์เป็นโมฆะ (??=) :
  4. const obj = { name : 'Johnathon'};
    obj.name ??= 'John';
    obj.age ??= 25;
    console.log(obj.name, obj.age); // Johnathon 25
    

const obj = { 
  name : 'John',
  age: 24
};

obj.name &&= 'Johnathon';
obj.age &&= 25;
console.log(obj.name, obj.age); // Johnathon 25

5. ตรรกะหรือการกำหนด (||=) :

const obj = { 
  name : '',
  age: 25
};

obj.name ||= 'Johnathon';
obj.age ||= 40;
console.log(obj.name, obj.age); // Johnathon 25

สำหรับเคล็ดลับการเขียนโปรแกรมและ JavaScript เพิ่มเติม โปรดติดตาม ขอบคุณสำหรับการอ่าน!

มีความสุขในการเขียนโค้ด ❤️!…