Vòng lặp sự kiện trong câu hỏi phỏng vấn javascript là gì?

Điều này nghe có vẻ tầm thường và trên thực tế, nó không quan trọng với ECMAscript 6 giới thiệu một hàm

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
2 mới cho mục đích chính xác này. Tuy nhiên, trước ECMAScript 6, điều này phức tạp hơn một chút, vì không cung cấp phương thức tương đương với phương thức
function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
2

Vấn đề là, trong đặc tả ECMAScript, các số nguyên chỉ tồn tại về mặt khái niệm; . e. , các giá trị số luôn được lưu trữ dưới dạng giá trị dấu phẩy động

Với ý nghĩ đó, giải pháp tiền ECMAScript-6 đơn giản và rõ ràng nhất [cũng đủ mạnh để trả về

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
4 ngay cả khi một giá trị không phải là số như chuỗi hoặc
function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
0 được truyền cho hàm] sẽ là cách sử dụng sau đây của

function isInteger[x] { return [x ^ 0] === x; } 

Giải pháp sau đây cũng sẽ hoạt động, mặc dù không thanh lịch như giải pháp trên

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }

Hàm sau [hoặc với

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
1 hoặc
function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
2 thay cho
function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
3] cũng có vẻ hữu ích, nhưng kết quả không hoàn toàn giống với hai hàm trên

function isInteger[x] { return Math.round[x] === x; }

Sự khác biệt là, các giải pháp dựa trên

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
4 này trả về
function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
5 cho
function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
6 và
function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
7, trong khi các giải pháp khác [và đặc biệt là
function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
2 của ES6] trả về
function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
4

Một giải pháp không chính xác khá phổ biến khác là như sau

function isInteger[x] { return [x ^ 0] === x; } 
1

Mặc dù cách tiếp cận dựa trên

function isInteger[x] { return Math.round[x] === x; }
0 này sẽ hoạt động tốt với nhiều giá trị của
function isInteger[x] { return Math.round[x] === x; }
1, nhưng khi
function isInteger[x] { return Math.round[x] === x; }
1 trở nên khá lớn, nó sẽ không hoạt động bình thường. Vấn đề là
function isInteger[x] { return Math.round[x] === x; }
3 buộc tham số đầu tiên của nó thành một chuỗi trước khi phân tích các chữ số. Do đó, khi số trở nên đủ lớn, biểu diễn chuỗi của nó sẽ được trình bày ở dạng hàm mũ [e. g. ,
function isInteger[x] { return Math.round[x] === x; }
4]. Theo đó, sau đó,
function isInteger[x] { return Math.round[x] === x; }
3 sẽ cố gắng phân tích cú pháp
function isInteger[x] { return Math.round[x] === x; }
4, nhưng sẽ ngừng phân tích cú pháp khi đến ký tự
function isInteger[x] { return Math.round[x] === x; }
7 và do đó sẽ trả về giá trị là
function isInteger[x] { return Math.round[x] === x; }
8. Quan sát

JavaScript là ngôn ngữ lập trình đồng bộ đơn luồng. Nhưng nó thực sự có nghĩa là gì?

Điều đó thực sự có nghĩa là gì khi chúng ta nói JavaScript là một luồng đơn?

Điều đó có nghĩa là luồng chính nơi mã JavaScript được chạy, chạy trên một dòng tại một thời điểm và không có khả năng chạy mã song song

Thí dụ

Javascript




function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
7____28
function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
9

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
0

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
1
function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
2

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
3____34

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
3____270____271

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
72
function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
73

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
3____275

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
75

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
0

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
78

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
0

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
80

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
7____282____29

đầu ra

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
1

Cấp phát bộ nhớ trong JavaScript

1] Bộ nhớ đống. Dữ liệu được lưu trữ ngẫu nhiên và bộ nhớ được phân bổ

2] Ngăn xếp bộ nhớ. Bộ nhớ được cấp phát dưới dạng ngăn xếp. Chủ yếu được sử dụng cho các chức năng

ngăn xếp cuộc gọi chức năng. Ngăn xếp chức năng là một chức năng theo dõi tất cả các chức năng khác được thực thi trong thời gian chạy. Bạn đã bao giờ thấy dấu vết ngăn xếp được in khi bạn gặp lỗi trong JavaScript chưa. Đó không là gì ngoài một ảnh chụp nhanh ngăn xếp chức năng tại thời điểm xảy ra lỗi

Thí dụ

Javascript




function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
1
function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
85

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
3____27____288
function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
89

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
75

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
0

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
1
function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
93

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
3____295

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
75

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
0

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
1
function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
99

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
3____301

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
75

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
0

function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
04

Thứ tự tại đó các chức năng được thực thi i. e bị bật ra khỏi ngăn xếp sau khi mục đích của hàm kết thúc như minh họa bên dưới

vòng lặp sự kiện. Vòng lặp sự kiện là thứ kéo nội dung ra khỏi hàng đợi và đặt nó vào ngăn xếp thực thi chức năng bất cứ khi nào ngăn xếp chức năng trống

Vòng lặp sự kiện là bí mật mà JavaScript mang lại cho chúng ta ảo giác là đa luồng mặc dù nó là một luồng. Ảo ảnh dưới đây thể hiện hoạt động tốt của vòng lặp sự kiện

Ở đây, chức năng gọi lại trong hàng đợi sự kiện chưa chạy và đang đợi thời gian vào ngăn xếp khi SetTimeOut[] đang được thực thi và API Web đang chờ đợi được đề cập. Khi ngăn xếp chức năng trống, chức năng sẽ được tải vào ngăn xếp như hình bên dưới

Đó là nơi vòng lặp sự kiện xuất hiện, nó lấy sự kiện đầu tiên từ Hàng đợi sự kiện và đặt nó vào ngăn xếp i. e trong trường hợp này là chức năng gọi lại. Từ đây, hàm này thực hiện gọi các hàm khác bên trong nó, nếu có

Vòng lặp sự kiện JavaScript là gì?

JavaScript có mô hình thời gian chạy dựa trên vòng lặp sự kiện, chịu trách nhiệm thực thi mã, thu thập và xử lý sự kiện cũng như thực hiện các tác vụ phụ được xếp hàng đợi. This model is quite different from models in other languages like C and Java.

Vòng lặp sự kiện trong lập trình là gì?

Cấu trúc lập trình liên tục kiểm tra các sự kiện bên ngoài và gọi các quy trình thích hợp để xử lý chúng . Vòng lặp sự kiện thường là vòng lặp chính trong một chương trình thường đợi người dùng kích hoạt thứ gì đó.

Vòng lặp sự kiện và bỏ phiếu là gì?

Vòng lặp sự kiện đôi khi còn được gọi là bộ điều phối thông báo, vòng lặp thông báo, bơm thông báo hoặc vòng lặp chạy. Vòng lặp sự kiện có thể được sử dụng cùng với lò phản ứng, nếu nhà cung cấp sự kiện tuân theo giao diện tệp, giao diện này có thể được chọn hoặc 'được thăm dò ý kiến' [cuộc gọi hệ thống Unix, không phải cuộc thăm dò thực tế]< . .

Vòng lặp sự kiện và ngăn xếp cuộc gọi là gì?

Ngăn xếp lệnh gọi là hàng đợi LIFO [Vào sau, Xuất trước]. Vòng lặp sự kiện liên tục kiểm tra ngăn xếp cuộc gọi để xem có chức năng nào cần chạy không . Trong khi làm như vậy, nó thêm bất kỳ lệnh gọi hàm nào mà nó tìm thấy vào ngăn xếp cuộc gọi và thực hiện từng lệnh theo thứ tự.

Chủ Đề