Làm thế nào để bạn truy cập bên ngoài này trong javascript?

[00. 02. 05] Được rồi, bỏ qua cuộc chạm trán đã được lưu, mặc dù chúng tôi sẽ không sử dụng nó bên trong. Thay vào đó, chúng tôi sẽ lấy mã của nó hoặc nếu bạn nhớ từ phần heap của mình, chúng tôi sẽ lấy nhãn của nó dưới chức năng lưu trữ mui xe. Xin lỗi, hãy giải quyết nếu nó nằm dưới mui xe, chức năng và bảng được lưu trữ nhưng với chúng tôi vì mục đích của chúng tôi, hãy lấy mã của bộ đếm gia tăng

[00. 02. 30] Chúng ta sẽ xem cái gì, chúng ta sẽ làm gì Jasmine? . Chúng tôi sẽ không chạy bộ đếm gia tăng, chúng tôi sẽ?
>> Nhài. Trả về số gia tăng
>> Bản án di chúc. Bộ đếm tăng trở lại. Vì vậy, nó sẽ nói bộ đếm số gia trả về, chúng tôi sử dụng mã đó để tra cứu bộ đếm số gia, đó là mã của bộ đếm số gia không có nhãn và chúng tôi lấy nó là Jasmine và chúng tôi trả lại nó vào?

[00. 02. 54]
>> Nhài. chức năng mới
>> Bản án di chúc. Vào chức năng mới, cô ấy chú ý. Và nó từng được gọi là bộ đếm gia số. Nó không được gọi như vậy nữa. Tôi chỉ đặt nó ở đây để chúng ta biết nó từng được gọi như vậy. Và nó đây, và mã duy nhất của nó là counter++. Và ngữ cảnh thực thi của chúng ta ở đây, mọi người, là gì?

[00. 03. 12]
>> Lớp học. Đi mất
>> Bản án di chúc. Bị đẩy ra khỏi ngăn xếp cuộc gọi, chính xác, đã bị xóa. Chúng tôi bật nó ra, chúng tôi bật nó ra khỏi ngăn xếp cuộc gọi
>> Bản án di chúc. Nó đấy, biến mất. Và chúng tôi đang vươn ra toàn cầu, nơi chức năng mới của chúng tôi hiện là nhãn toàn cầu mới cho chức năng được sinh ra bên trong bên ngoài dưới dạng bộ đếm gia số

[00. 03. 33] Mọi người hãy chạy nó và xem điều gì sẽ xảy ra. Chức năng mới được gọi là thương hiệu, vâng, mọi người cùng nhau, thương hiệu mới?
>> Lớp học. Chi phí thực hiện
>> Bản án di chúc. Cảm ơn bạn đã tiếp thêm năng lượng cho tôi, sau sự thiếu nhiệt tình ngớ ngẩn của tôi. Nó đây rồi, nó đi vào ngăn xếp cuộc gọi. Một chức năng mới được thêm vào ngăn xếp cuộc gọi

[00. 03. 59] Chúng tôi đi vào nó, không có gì trong bộ nhớ cục bộ được chỉ định. Thay vào đó, chúng tôi nhấn ngay dòng nào, Jasmine?
>> Nhài. Bộ đếm cộng cộng
>> Bản án di chúc. Bộ đếm cộng cộng, vì chức năng mới là chức năng trước đây được gọi là bộ đếm gia số. Jasmine, tôi tìm quầy ở đâu trước?
>> Nhài. bối cảnh địa phương
>> Bản án di chúc. Vâng, tuyệt vời, cảm ơn bạn, trong ngữ cảnh thực thi cục bộ

[00. 04. 23] Một lần nữa, câu hỏi tương tự với bạn một lần nữa, có gì ở đó không?
>> Nhài. Không
>> Bản án di chúc. Không. Bây giờ, mọi thứ sẽ ở đâu, mọi trực giác mà chúng tôi đã nghĩ trong nhiều năm đề xuất, với điều kiện trước tiên chúng tôi kiểm tra chức năng mới của ngăn xếp cuộc gọi của mình, nơi chúng tôi sẽ tìm kiếm Jasmine tiếp theo, mọi loại trực giác chúng tôi có về việc tôi điều hành chức năng của mình ở đây

[00. 04. 47] Tôi có quyền truy cập vào nội dung bên ngoài nơi nó đang chạy. Tôi có thể nói rằng tôi có thể đến và tìm quầy tiếp theo ở đâu?
>> Nhài. Có lẽ chúng ta nghĩ nhìn vào bên ngoài
>> Bản án di chúc. Chúng tôi có thể nghĩ rằng nhìn vào bên ngoài nhưng bên ngoài tắt, bối cảnh thực thi đó bị tắt. Do đó, nó tắt chỉ số tuyệt vời đó

[00. 05. 03] [ÂM THANH] Chúng tôi không thể lấy lại chủ đề của chúng tôi trong đó đã thực hiện xong lời đe dọa hành quyết của chúng tôi đã đi vào, quay trở lại và nó đã biến mất. Và bây giờ chúng ta đang ở bên trong chức năng mới. Vì vậy, chúng tôi đang chạy một chức năng mới trong toàn cầu. Vì vậy, Jasmine, chúng ta có thể tìm quầy ở đâu?
>> Nhài. Toàn cầu
>> Bản án di chúc. toàn cầu

[00. 05. 22] Về lý thuyết, nghe có vẻ phù hợp với tôi
>> Bản án di chúc. Dòng này không ổn lắm. Là phản công toàn cầu, Jasmine?
>> Bản án di chúc. Nó hơi cũ rồi [CƯỜI]. Không, rất buồn
>> Lớp học. [CƯỜI TO]
>> Bản án di chúc. Rất buồn. Nhân tiện, thật là một thiết kế ngôn ngữ có vấn đề khiến điều này xảy ra. Điều này rõ ràng giống như một thiết kế ngôn ngữ tồi

[00. 05. 55] Cho rằng đây không phải là trọng tâm chính của bài nói chuyện này, chúng tôi muốn sử dụng. Đối với một tính năng rất mạnh mẽ, tôi sẽ không bàn sâu về vấn đề này, nhưng tôi sẽ không để chúng ta phải chịu đựng quá lâu. Thay vào đó, tôi sẽ kể cho bạn nghe về một điều mạnh mẽ xảy ra khi tôi trả về một chức năng khi một chức năng khác đang chạy

[00. 06. 20] Đặt cho nó một nhãn toàn cầu và chạy nó bằng nhãn toàn cầu mới của nó. Một cái gì đó rất đặc biệt xảy ra. Tôi không chỉ nhận được mã của hàm bộ đếm tăng được trả về hàm mới. Tôi mang theo mã chức năng của mình một thứ khác. Ở mặt sau của chức năng này đi kèm,
>> Bản án di chúc. [CƯỜI] Ở mặt sau của chức năng này, toàn bộ bộ nhớ cục bộ xung quanh của nó khi chức năng được trả về, được trả lại cho chức năng mới

[00. 07. 06] Nó mang theo nó được gắn vào nó ở mặt sau của chức năng. Và đây là ở mặt sau của chức năng, nó là một chiếc ba lô nhỏ khi chức năng được kéo ra, nó sẽ kéo nó trên lưng. Dữ liệu xung quanh từ khi nó được sinh ra và nhìn vào đó

[00. 07. 26] Có số 0 đi kèm với bộ đếm và chúng ta sẽ nói về việc liệu có tên chính thức nào khác ngoài ba lô hay không. Tôi sẽ nói với bạn điều này sau khi ai đó xem cuộc nói chuyện này và viết một bài đăng trên blog về nó có 50.000 lượt thích, nghĩa là thuật ngữ này ngày càng phổ biến hơn có thể là đặc điểm kỹ thuật của JavaScript, không bao giờ, nhưng có thể nó được đính kèm trên hàm, nghĩa là Jasmine,

[00. 08. 04] Trước khi tôi nhìn ra toàn cầu, có thể có một nơi nào khác và bạn có thể sử dụng từ này. Bạn có thể nói từ nó bắt đầu bằng b và kết thúc ngược lại. Jasmine có nơi nào khác mà bạn nghĩ rằng JavaScript sẽ thực hiện hành trình tra cứu trước khi nó tìm kiếm bộ đếm trên toàn cầu không?

[00. 08. 22]
>> Nhài. Bạn có thể tìm trong gói chức năng mới
>> Bản án di chúc. Bạn sẽ tìm trong gói chức năng mới. Cảm ơn bạn rất nhiều Jasmine. Cô ấy đang ở đúng vị trí, chúng ta đi vào các chức năng mới trong gói sau, đây rồi, và chúng ta tìm thấy gì ở đó, Jasmine, chúng ta tìm thấy bộ đếm là gì?
>> Nhài. Số không

[00. 08. 44]
>> Bản án di chúc. Bộ đếm bằng 0, cô ấy phát hiện ra, chúng ta làm gì với nó, chúng ta tăng nó lên, Jasmine lên?
>> Nhài. Một
>> Bản án di chúc. Đến một. Bối cảnh thực thi này biến mất. Chúng tôi sẽ không xóa nó, chúng tôi sẽ thêm lại vì chúng tôi sẽ chạy lại chức năng mới. Chúng ta sẽ nói tất cả về chiếc ba lô này trong giây lát nhé mọi người

[00. 09. 08] Nó siêu mạnh
>> Bản án di chúc. Mọi thứ trong bộ nhớ cục bộ không có gì ở đây nhưng mọi thứ luôn bị xóa, nó chỉ là tạm thời. Chạy lại chức năng mới. Thương hiệu mới Anna, thương hiệu gì mới?
>> Lớp học. Bối cảnh thực thi
>> Bản án di chúc. Tuyệt vời tất cả mọi người trừ Anna cũng vậy. Anna tuyệt vời khi chúng tôi bắt đầu khi họ bật âm thanh cho micrô của bạn và đó chỉ là Bubenesh nói bối cảnh thực thi

[00. 09. 36] Chúng tôi tìm thấy trong lệnh gọi tiếp theo tới bộ đếm chức năng mới plus plus, Eric, nhân tiện, tôi tìm bộ đếm ở đâu trước, xin nói rõ, đây là ngữ cảnh thực thi chức năng mới mới trên ngăn xếp cuộc gọi. Tôi đã xóa nó và đặt lại. Và tôi nên tìm ở đâu trước, Eric?

[00. 10. 00]
>> Eric. Đầu tiên chúng ta sẽ xem xét ngữ cảnh thực thi cục bộ
>> Bản án di chúc. Tuyệt vời. Tôi có tìm thấy quầy không?
>> Eric. Không có truy cập ở đó?
>> Bản án di chúc. Tôi phải tìm ở đâu tiếp theo?
>> Eric. Chúng ta sẽ đi đến ba lô
>> Bản án di chúc. Chúng tôi sẽ đi đến ba lô, nơi chúng tôi tìm quầy là?

[00. 10. 14]
>> Eric. Một
>> Bản án di chúc. Wow, chúng tôi thấy bộ đếm là 1. Chúng tôi tăng nó lên?
>> Eric. 2
>> Bản án di chúc. 2,
>> Bản án di chúc. Ngay lập tức, mọi người, bạn có thể thấy điều này đã tăng cường chức năng của chúng tôi. Chức năng chỉ là hai điều. Chà, bây giờ giả sử hai khối mã, khi chạy, chúng sẽ duyệt qua mã, chuỗi và bộ nhớ tạm thời được gói lại chỉ dành cho chức năng tại thời điểm đó

[00. 10. 45] Điều này cho phép các chức năng của chúng tôi có hai loại vị trí để lưu trữ dữ liệu, một nơi lưu trữ tạm thời để thực hiện một lần, chạy một lần và một nơi lưu trữ vĩnh viễn, miễn là mã của chức năng được lưu. Thêm chức năng không chỉ là mã nữa, nó lưu mã dưới nhãn chức năng mới ban đầu là mã bộ đếm gia tăng cộng với dữ liệu liên tục được đính kèm với nó mà chúng ta có quyền truy cập bằng cách tạo tham chiếu trong bộ đếm tăng biên giới chức năng mới cho thứ gì đó không có trong bộ nhớ cục bộ

[00. 11. 21] Vì vậy, chúng tôi nhảy ra ngoài và tìm trong ba lô và miễn là khi chúng tôi sinh ra khi chúng tôi tạo chức năng hiện được gọi là mới. Chức năng bắt nguồn từ cuộc gặp gỡ. Chúng tôi có xung quanh nó trong bộ nhớ cục bộ, bộ đếm lưu bằng 0, được kéo ra ở mặt sau của chức năng thành chức năng mới

[00. 11. 41] Và đó là gắn bó, đó là gắn bó mọi người. Vì vậy, tôi sẽ. [SOUND] Tôi sẽ giải quyết vấn đề này một lần nữa định nghĩa của chức năng mới, mã của nó, mã đã lưu của nó hiện có một liên kết ẩn. Ẩn, tốt, đó là lý do tại sao tôi phải nói với bạn một vài điều quan trọng hơn về điều này trước khi chúng ta chuyển sang ngón tay cái

[00. 12. 05] Dữ liệu vĩnh viễn này ở đây được gắn vào chức năng như thế nào? . Tôi không thể sử dụng chức năng mới trong toàn cầu, chức năng mới. balo. truy cập, điều này là không thể. Tôi thậm chí không thể đi chức năng mới. Tên chính thức của nó là bộ đếm dấu chấm khi họ bắt đầu sử dụng nó, hoàn toàn là họ gọi nó là riêng đối với bộ đếm gia tăng đó hiện được gọi là chức năng mới

[00. 12. 38] Gọi hàm, chúng ta chỉ có thể vào bằng cách chạy hàm mới, không tìm thấy thứ chúng ta tham khảo trong bộ nhớ cục bộ và nhảy ra khỏi ba lô. Loại ba lô tự chèn trước khi chúng tôi tìm kiếm trên toàn cầu. Đừng hiểu lầm tôi, ba lô trong toàn cầu theo nghĩa là nó được gắn với một chức năng được lưu trong toàn cầu

[00. 12. 58] Nhưng toàn cầu thực sự có nghĩa là tôi có thể truy cập tên của dữ liệu đó khi tôi ở trong ngữ cảnh thực thi toàn cầu, tôi không thể truy cập dữ liệu này, dữ liệu bị ẩn, dữ liệu được bảo vệ. Chà, nó được bảo vệ như thế nào?

[00. 13. 20] Ngay sau khi bộ đếm số gia được lưu. Nó ngay lập tức có một liên kết đến ký ức xung quanh. Ngay lập tức, đến toàn bộ ký ức xung quanh. Liên kết đó được lưu trữ trên thuộc tính ngoặc vuông ngoặc vuông, hai ngoặc vuông. Khung vuông phạm vi được liên kết với bộ nhớ đang chạy này. Nó sẽ chỉ sao chép một liên kết đến nơi nó được lưu trữ theo đúng nghĩa đen

[00. 13. 41] Khi tôi trả lại chức năng, tôi rút ra trên liên kết đó tất cả dữ liệu với tôi được đính kèm với chức năng. Vẫn có thuộc tính phạm vi đó, nó đây rồi. Làm thế nào mà nắp-
>> [KHÔNG NGHE ĐƯỢC]
>> Bản án di chúc. Ý tôi là, [CƯỜI] nắp đã trở lại
>> Lớp học. [CƯỜI TO]
>> Bản án di chúc. Quyến rũ, tuyệt vời, nó đây rồi

[00. 14. 01] Tôi định bắt đầu lắc nó lần nữa thì tôi nghĩ, chà, đó là. Được rồi, như tôi đã nói, bất cứ khi nào chức năng mới chạy và nó không tìm thấy bộ nhớ cục bộ của bộ đếm, nó sẽ đi qua định nghĩa của nó để tìm thuộc tính phạm vi ẩn của nó, hay nói cách khác là vào ba lô và tìm bộ đếm. Bởi vì bộ đếm đã có khi nó được sinh ra và khi nó được trả lại, mã tăng bộ đếm từ chạy bên ngoài

[00. 14. 23] Chúng tôi đã chạy bên ngoài, chúng tôi đã trả lại bộ đếm gia tăng đó từ khi nó đang tạo nó từ trong ra ngoài và chúng tôi đưa nó trở lại chức năng mới và chúng tôi chạy chức năng mới và nó không tìm thấy bộ đếm cục bộ và tìm đến ba lô chức năng mới được lưu trữ trên phạm vi . Tôi muốn làm ngón tay cái nhưng có lẽ tôi muốn nói với bạn một vài điều nữa về chiếc ba lô này trước

[00. 14. 46] Đầu tiên, nó thực sự được tối ưu hóa, Java Script tạo liên kết về việc lưu bộ đếm gia tăng từ trong ra ngoài tới bộ nhớ cục bộ xung quanh, mọi thứ trong đó, liên kết tới toàn bộ bộ sưu tập, mọi thứ, có một liên kết tới nơi lưu trữ tất cả những thứ này

[00. 15. 07] Thông thường khi bạn chạy xong một chức năng, điều duy nhất chúng ta giữ lại là gì, Sam? . Tất cả những thứ khác trong bộ nhớ cục bộ, chúng ta có giữ nó không?
>> Sâm. Không
>> Bản án di chúc. Không, chúng tôi tự động thu gom rác. Tại sao lại gọi là rác?

[00. 15. 20] Nó được gọi là rác vì chúng tôi không thể truy cập bất kỳ dữ liệu nào theo tên của nó nữa. Vì vậy, không có lý do gì nó ở đó. Chúng tôi tự động thu thập nó. Điều đó có nghĩa là nó sẽ tự động bị xóa bởi JavaScript
>> Sâm. Tài liệu tham khảo quá yếu
>> Bản án di chúc. Chắc chắn rồi. Thay vào đó, đây hoàn toàn là ở đây, chúng tôi tin rằng khi chúng tôi trả về chức năng này, JavaScript sẽ giữ tất cả dữ liệu xung quanh đó trong ba lô của hàm, nhưng hãy giữ

[00. 15. 55] Điều gì sẽ xảy ra nếu tôi nói có thể là 10 điều khác nhau trong bộ nhớ cục bộ này. Tôi quay trở lại Tôi tăng bộ đếm vào chức năng mới chạy chức năng mới. Tôi có 10 thứ trong bộ nhớ cục bộ này ngoài bộ đếm. Điều duy nhất Alex, bên trong chức năng mới đối với tôi là bộ đếm tăng dần, điều duy nhất tôi đề cập đến Alex là gì?

[00. 16. 17]
>> Alex. Phản đối
>> Bản án di chúc. Phản đối. Vì vậy, nếu tôi có 10 thứ khác trong chiếc ba lô này, tôi có thể lấy bất kỳ thứ nào trong số đó không? . Tôi không thể đi, chức năng mới. phạm vi. truy cập, tôi sẽ không muốn. Tôi muốn nó được bảo tồn và bảo vệ để chạy chức năng

[00. 16. 32] Có nghĩa là, tôi biết trên trở lại xin lỗi. Tốt hơn, JavaScript biết, khi trả lại incrementCounter cho newFunction, nó đã biết chức năng đó cuối cùng có thể cần hoặc truy cập vào cái gì. Và do đó, nó tối ưu hóa những gì được lấy ra trong ba lô sau khi chúng tôi thoát ra bên ngoài và xóa mọi thứ khác trong bộ nhớ cục bộ

Làm cách nào để đặt một hàm bên trong một hàm JavaScript?

Cách tiếp cận. Viết một hàm bên trong một hàm khác. Gọi hàm bên trong trong câu lệnh trả về của hàm bên ngoài. Gọi là fun(a)(b) trong đó a là tham số của hàm bên ngoài và b là hàm bên trong .

Một hàm có thể chứa một hàm khác trong JavaScript không?

Hàm lồng nhau . Có thể dễ dàng thực hiện điều này với JavaScript .