Hoisting là gì

  -  

*
Bài viết từ bây giờ của chính mình nhằm cùa đến một đặc thù của Javascript chính là Hoisting, vậy Hoisting là gì ?? Hoisting của thay đổi và của hàm không giống gì nhau ?? Chúng ta vẫn có tác dụng siêu tương đối nhiều ví dụ bên dưới nhằm hiểu rõ rộng nhé (ok)

1. Javacript Hoisting?

Bắt đầu với ví dụ 1 như thế nào (len)

#Ex1: console.log(a);Kết quả không tồn tại gì lạ: raise lỗi a is not define, do trở nên a chưa được knhì báo chỗ nào cả

lấy ví dụ như 2:

#Ex2:console.log(a);a = "Hello Hoisting";Ví dụ này có vẻ tinh vi rộng ví dụ bên trên "vô cùng nhiều" tuy vậy công dụng vẫn chỉ có một: a is not define

lấy ví dụ như 3:

#Ex3:var a;console.log(a);đầu ra đã là undefined bởi a đã làm được knhị báo mà lại vẫn không được gán giá trị

Ví dụ 4

#Ex4:console.log(a);var a;Thật tình cờ cùng thật bất ngờ, hiệu quả ra trùng cùng với Ex3, đều là undefinedTại sao lại như vậy ???

Định nghĩa

Hoisting là hành động khoác định của Javascript, nó đã đưa phần knhị báo lên phía trên topTrong Javascript, một trở thành (variable) hoàn toàn có thể được knhì báo sau khi được sử dụng

Chúng ta sẽ tiếp tục có tác dụng Ex5 và phần phân tích và lý giải hiểu rõ hơn cho ví dụ 4.

#Ex5console.log(a);var a = "Hello Hoisting"#đầu ra = ???Kết quả sẽ được diễn giải theo sơ đồ dùng sau:

*
Giải thích:

Trình biên dịch của Javascript đang phân bóc phần var a = "Hello Hoisting" thành 2 phần là knhì báo và gán giá trị

Knhị báo: var aGán giá trị a = "Hello Hoisting"

Theo Hoisting, Javascipt đang gửi phần khai báo lên trên mặt top. Vì vậy, đã chỉ gồm phần knhì báo được gửi lên ở trên top, còn phần gán giá trị vẫn giữ nguyên trang bị tự yêu cầu vẫn nghỉ ngơi dướiVậy bắt buộc đầu ra sẽ là undefined

2.


Bạn đang xem: Hoisting là gì


Xem thêm: Checkin "Sang Chảnh" 8 Resort Tuyệt Đẹp Gần Hồ Tuyền Lâm Ở Đà Lạt, Việt Nam


Xem thêm: Thời Tiết Sapa Tháng 11 Có Gì? Kinh Nghiệm Sapa Tháng 11


Hoisting of function?

Định nghĩa

Trình biên dịch Javascript đang đưa phần knhị báo lên trên top giống hệt như bí quyết làm với biến hóa.lấy một ví dụ 6:

say_something("YOLO");function say_something(a) console.log(a);Output cũng như với phần biến hóa YOLO

Ví dụ 7:

#Ex7:do_something();function do_something() console.log(a); var a = "fly";Kết quả sẽ tiến hành diễn giải theo sơ đồ dùng sau:

*

Giải thích:

Cũng giống hệt như cùng với phần 1, phần bên trong của hàm do_something cũng khá được trình biên dịch thực hiện hoisting.Nhưng phần knhị báo chỉ được chuyển lên ở trên top của hàm do_something chứ đọng không phải của chương trình

Vậy cần, đầu ra đang là undefined

3. Hoisting function vs Hoisting variable

Định nghĩa:

Trình biên dịch Javascript đang chuyển phần đinch nghĩa của hàm trước phần knhì báo của biếnlấy ví dụ 8:

var show_me;show_me();function show_me() console.log("Money");show_me = function() console.log("Diamond");Theo khái niệm bên trên, output sẽ là Money

Những hàm knhị báo sau trường hợp trùng thương hiệu vẫn ghi đè lên hàm khai báo trước

lấy một ví dụ 9:

var show_me;show_me();function show_me() console.log("Money");show_me = function() console.log("Diamond");function show_me() console.log("Gem");đầu ra vẫn là Gem

4. Tổng kếtTrình biên dịch của Javascript đang chuyển phần knhì báo của biến với hàm lên trên mặt top, nó được call là HoistingChỉ có phần khai báo được đưa lên top, chưa phải phần gán giá bán trịPhần khai báo hàm được gửi lên trước phần knhì báo của biến5. Tài liệu tđê mê khảo

https://github.com/getify/You-Dont-Know-JS/blob/master/scope %26 closures/ch4.md - You don"t know JShttps://nethuerestaurant.com.vn/p/javascript-hoisting-explained-DljMbVKJMVZn - JavaScript Hoisting Explained - Lê Minch Tuấn - nethuerestaurant.com.vn