คำถามสัมภาษณ์ Javascript โง่ๆ
ฉันไม่ได้ต่อต้านคำถามทางเทคนิคโดยตรง ฉันคิดว่านี่เป็นวิธีหนึ่งในการทำความเข้าใจเกี่ยวกับทักษะด้านเทคโนโลยีของผู้สมัคร ฉันชอบการสนทนาทางเทคนิคมากกว่าการสัมภาษณ์ด้านเทคนิคที่เข้มงวด แต่ให้ฉันอธิบายหนึ่งในคำถามที่แย่ที่สุดของ Javascript ในวันนี้และทำไม
ก่อนที่ฉันจะเริ่มอธิบายประเด็นของฉัน เรามาเจาะลึกถึงประวัติของ Javascript กันสักหน่อย
มันคือปี 1995พัฒนาโดย Netscape (Brendan Eich) หลังจากนั้น Mozilla ก็ปรับปรุงและพัฒนาจาวาสคริปต์ต่อไป แนวคิดเบื้องหลังจาวาสคริปต์คือการสร้างไดนามิกบางอย่างเมื่อท่องโลกออนไลน์ ใช้สำหรับการแจ้งเตือนหรือภาพเคลื่อนไหวขั้นพื้นฐาน Javascript ได้รับการออกแบบมาให้มีรูปลักษณ์และความรู้สึกของ Java แต่เพื่อให้ใช้งานได้ง่ายขึ้นสำหรับผู้ที่ไม่ใช่โปรแกรมเมอร์ ในเวลานั้นไม่มีแม้แต่ AJAX -> Javascript ที่ไม่ได้ใช้สำหรับการร้องขอและอื่นๆ
ประมาณปี 1997 Javascript กลายเป็นส่วนหนึ่งของมาตรฐาน ECMA
ในปี 2548 เราได้เปิดตัว AJAX อย่างเป็นทางการครั้งแรก -> นี่คือจุดที่การพัฒนาเว็บในปัจจุบันเริ่มต้นขึ้น ไม่จำเป็นต้องรีเฟรชหน้าเพื่อให้สามารถโหลดข้อมูลซ้ำได้อีกต่อไป ลองนึกภาพว่าจู่ๆ คุณก็สร้างเว็บแอปขึ้นมาได้ แต่คำถามคือ Javascript พร้อมหรือยัง? ก็ไม่เชิง นักพัฒนาคุ้นเคยกับการใช้สิ่งต่าง ๆ เช่นIIFEE :
(function() {
// Code that runs in your function
var name = 'John Doe'
}
)()
console.log(name) // error as the name is not defined in this scope
IIFEEโดยพื้นฐานแล้วจากมุมมองของวันนี้เป็นโซลูชันแฮ็กที่สามารถสร้างแอปที่ซับซ้อนด้วยไฟล์ . js ได้มากขึ้น เราต้องการโซลูชันประเภทนี้เพราะไม่เช่นนั้น เราจะมีข้อขัดแย้งในการตั้งชื่อตัวแปรฟังก์ชันฯลฯเนื่องจากJavascript เป็นภาษาที่ใช้งานได้จริงโดยไม่มีคลาส
VAR และ Hoisting -> Hoisting เป็นพฤติกรรมของการย้ายการประกาศไปด้านบน และในจาวาสคริปต์ ตัวแปรสามารถใช้ได้ก่อนที่จะประกาศ นี่เป็นสถานการณ์ที่ถูกต้อง:
myVariable = ‘is this shit possible?’
var myVariable;
console.log(myVariable); // is this shit possible?
ในตัวอย่างนี้ ตัวแปร myVariable ถูกย้ายไปด้านบนสุดและเริ่มต้นพร้อมกัน นี่คือเหตุผลว่าทำไมในบรรทัดที่ 3 ตัวแปรจึงเก็บสตริงไว้แล้ว
และยังมีเรื่องและปัญหาอีกมากมายเช่นนั้น อย่าลืมเกี่ยวกับส่วนแปลก ๆ ของจาวาสคริปต์ ซึ่งคุณจะพบได้ที่นี่:https://hackernoon.com/the-weird-parts-of-javascript-zxo34i8
แต่มีบางอย่างเปลี่ยนไปด้วย Javascript จากเวอร์ชัน es6
หากเรากลับไปที่ตัวอย่างการชักรอกด้วยวิธีใหม่:
myVariable = ‘is this shit possible?’
let myVariable;
console.log(myVariable); // undefined
Javascript ยังคงวางการประกาศตัวแปรไว้ที่ด้านบน แต่ไม่ใช่การเริ่มต้น ดังนั้นคอนโซลของเราจะเขียน ตัวแปรที่ ไม่ได้กำหนดแทนสตริง
นอกจากเวอร์ชัน es6 แล้ว เรายังมี:
- ฟังก์ชั่นลูกศร
- ชั้นเรียน
- โมดูล
- สัญญา
- เครื่องกำเนิดไฟฟ้า
- การประกาศ let และ const สำหรับตัวแปร
- ตัวดำเนินการกระจายและพักตัว
- ตัวอักษรแม่แบบ
- การทำลายล้าง
- และอีกมากมาย
คำถามสัมภาษณ์ที่ไม่ถูกต้องคืออะไร?
จำเป็นต้องแสดงตัวอย่างเหล่านี้อย่างน้อยบางส่วนก่อนที่ฉันจะเริ่มวาดประเด็นได้
ลองนึกภาพว่าคุณเป็นนักพัฒนาใหม่และเริ่มเรียนรู้ Javascript คุณไม่จำเป็นต้องเข้าใจ:
- วาร์
- ไอฟี
- ปิด
- สัญญาและการใช้งาน (แต่ควรรู้ไว้)
แต่ไม่จำเป็นอย่างยิ่งที่จะต้องตรวจสอบความรู้ของ Javascript เวอร์ชันเก่า Javascript แบบเก่าถูกสร้างขึ้นเพื่อวัตถุประสงค์ที่แตกต่างจากที่ใช้ในปัจจุบัน





































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)