Phần 1: Top (1-5) câu hỏi JavaScript phổ biến
JavaScript là ngôn ngữ lập trình đã trở thành một trong những phần mềm được yêu cầu nhiều nhất trong yêu cầu công việc. Đó là một ngôn ngữ protean được sử dụng để phát triển web, phát triển ứng dụng dành cho thiết bị di động, lập trình garconside, v.v.
Trong bài đăng trên blog này, chúng tôi sẽ đề cập đến 5 câu hỏi phỏng vấn JavaScript phổ biến thường được hỏi trong các cuộc phỏng vấn chuyên ngành.
Những câu hỏi này sẽ bao gồm một loạt các mô-típ, từ những khái niệm chung giới thiệu tương tự như let và var, đến các mô-típ nâng cao hơn như đóng cửa và di sản. Khi hiểu những câu hỏi này và câu trả lời của chúng, bạn sẽ sẵn sàng hơn cho cuộc phỏng vấn JavaScript sắp tới của mình.
Câu hỏi 1: Sự khác biệt giữa let, const và var trong JavaScript là gì?
Trong JavaScript, các biến có thể được khai báo bằng ba từ khóa khác nhau “var”, “let” và “const”. Mỗi từ khóa này có các đặc điểm và trường hợp sử dụng riêng.
Sự khác biệt chính giữa “var” và “let” là trong cách sắp xếp các biến mà chúng khai báo. Các biến được khai báo với “var” là các biến có phạm vi hàm, nghĩa là chúng chỉ có thể truy cập được trong hàm mà chúng được khai báo. Các biến được khai báo bằng “let” nằm trong phạm vi khối, nghĩa là chúng chỉ có thể truy cập được trong khối mà chúng được khai báo.
Sự khác biệt chính giữa “let” và “const” là các biến được khai báo bằng “let” có thể được gán lại, trong khi các biến được khai báo bằng “const” không thể được gán lại. Tuy nhiên, nếu biến là một đối tượng, chúng ta vẫn có thể thay đổi các phần tử của nó.
Sau đó là một minh họa để chứng minh sự khác biệt giữa “let” và “const” về mặt chỉ định lại
let x = 1;
x = 2; // allowed
const y = 1;
y = 2; // not allowed, will throw an error
const z = {a: 1};
z.a = 2; // allowed, we can change the properties of the object
Trong JavaScript, kiểm tra là một hàm có quyền truy cập vào các biến trong la bàn gốc của nó, thực tế là sau khi hàm gốc thực thi xong. Điều này cho phép hàm bên trong" flash back " giá trị của các biến trong la bàn gốc của nó, thực sự nếu chúng không còn trong bộ nhớ.
Sau đó là một minh họa đơn giản thể hiện khái niệm kiểm tra
function outerFunction(x) {
function innerFunction() {
console.log(x);
}
return innerFunction;
}
let myClosure = outerFunction(10);
console.log(myClosure()); // Output: 10
Các bao đóng thường được sử dụng trong JavaScript để tạo các biến riêng tư, để tạo các cuộc gọi và áp dụng các mô-đun.
Sau đó là một minh họa minh họa cách sử dụng các bao đóng để tạo các biến riêng tư
function createCounter() {
let count = 0;
return {
increment: function() {
count++;
},
getCount: function() {
return count;
}
}
}
let counter = createCounter();
counter.increment();
console.log(counter.getCount()); // Output: 1
Tóm lại, bao đóng là một tính chất tổng quát quan trọng trong JavaScript, cho phép các hàm bên trong thực sự giữ quyền truy cập vào các biến trong la bàn cha của chúng sau khi hàm cha hoàn thành thực thi. Chúng được sử dụng đáng kể trong vô số tập lệnh khác nhau để cung cấp cách viết mã quan trọng và linh hoạt hơn.
Câu hỏi 3: hoisting trong JavaScript là gì?
Trong JavaScript, cẩu là một phương tiện nơi các xác nhận biến và chức năng được chuyển lên đầu la bàn của chúng trước khi luật được thực thi. Điều này có nghĩa là các biến và hàm có thể được sử dụng trước khi chúng được khai báo trong mã.
Để minh họa, luật sau sẽ thực sự hoạt động mặc dù biến x được khai báo sau khi nó được sử dụng
console.log(x); // Output: undefined
var x = 5;
Tuy nhiên, cẩu chỉ áp dụng cho các xác nhận chứ không phải khởi tạo. do đó, luật sau đây sẽ đưa ra ReferenceError
console.log(x); // ReferenceError: x is not defined
let x = 5;
đồng thời, các xác nhận chức năng cũng được nâng lên trên cùng của la bàn của họ, vì vậy luật sau đây sẽ hoạt động
example(); // Output: "I am a hoisted function"
function example() {
console.log("I am a hoisted function");
}
Tóm lại, hoisting là một cơ chế trong JavaScript trong đó các khai báo biến và hàm được di chuyển lên đầu phạm vi của chúng trước khi mã được thực thi. Điều này cho phép các biến và hàm được sử dụng trước khi chúng được khai báo trong mã, nhưng nó có thể làm cho mã khó hiểu hơn và có thể dẫn đến các lỗi không mong muốn nếu không được sử dụng cẩn thận.
Câu hỏi 4: Từ khóa “this” hoạt động như thế nào trong JavaScript?
Trong JavaScript, từ khóa “this” đề cập đến đối tượng mà hàm là một phương thức hoặc đối tượng mà hàm được gọi. Giá trị của “this” có thể thay đổi tùy thuộc vào cách hàm được gọi.
Dưới đây là một vài ví dụ để chứng minh cách “cái này” hoạt động trong các ngữ cảnh khác nhau:
- Trong phạm vi toàn cầu, “this” đề cập đến đối tượng toàn cầu (cửa sổ trong trình duyệt và toàn cầu trong Node.js)
console.log(this); // Output: window or global
let person = {
name: "John",
sayName: function() {
console.log(this.name);
}
};
person.sayName(); // Output: "John"
function Person(name) {
this.name = name;
}
let john = new Person("John");
console.log(john.name); // Output: "John"
<button id="myButton">Click me</button>
<script>
let button = document.getElementById("myButton");
button.addEventListener("click", function() {
console.log(this); // Output: the button element
});
</script>
let person = {
name: "John",
sayName: () => {
console.log(this.name);
}
};
person.sayName(); // Output: undefined
Trong JavaScript, cả hai dấu bằng (==) và dấu ba bằng (===) đều được sử dụng để so sánh, nhưng chúng có chức năng khác nhau.
Dấu bằng kép (==) so sánh các giá trị bằng nhau, nhưng nó không kiểm tra kiểu dữ liệu của các giá trị được so sánh. Điều này có nghĩa là nó sẽ thực hiện ép kiểu nếu cần thiết để so sánh.
console.log(1 == "1"); // Output: true
console.log(true == 1); // Output: true
console.log(1 === "1"); // Output: false
console.log(true === 1); // Output: false
Nói tóm lại, giá trị so sánh kép bằng (==) cho đẳng thức và thực hiện ép kiểu nếu cần, trong khi dấu ba bằng (===) so sánh cả giá trị và kiểu dữ liệu của các giá trị được so sánh và không thực hiện ép kiểu.
Nếu bạn muốn tìm hiểu thêm về viết mã trong Javascript, hãy nhớ theo dõi tôi để biết thêm các đoạn mã và ví dụ. Tôi sẽ chia sẻ thông tin có giá trị và mẹo về cách làm chủ ngôn ngữ và cải thiện kỹ năng của bạn với tư cách là nhà phát triển. Vì vậy, hãy theo dõi để biết thêm thông tin cập nhật và chúng ta hãy tiếp tục học cùng nhau.
Cảm ơn vì đã đọc. Học vui vẻ
Hãy ủng hộ ấn phẩm của chúng tôi bằng cách theo dõi nó
Giới thiệu về Kiến trúc Spark Biết thêm về các đối tượng Đồng hành trong Kotlin Java ServiceLocatorFactoryBean Triển khai Xác định hiệu quả các số nguyên tố (1 — n ) trong JavaScript: Hướng dẫn từng bước — Đi sâu vào…
![Dù sao thì một danh sách được liên kết là gì? [Phần 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































