Hướng dẫn how do you read a variable inside the it function in javascript? - làm thế nào để bạn đọc một biến bên trong hàm it trong javascript?
Các chức năng là một trong những khối xây dựng cơ bản trong JavaScript. Một hàm trong JavaScript tương tự như một thủ tục, một tập hợp các câu lệnh thực hiện một tác vụ hoặc tính toán một giá trị, nhưng đối với một quy trình để đủ điều kiện làm chức năng, nó sẽ lấy một số đầu vào và trả về một đầu ra trong đó có một số mối quan hệ rõ ràng giữa đầu vào và đầu ra. Để sử dụng một hàm, bạn phải xác định nó ở đâu đó trong phạm vi mà bạn muốn gọi nó. Xem thêm Chương tham chiếu toàn diện về các chức năng JavaScript để tìm hiểu các chi tiết. Một định nghĩa chức năng (còn được gọi là khai báo chức năng hoặc câu lệnh hàm) bao gồm từ khóa
Ví dụ: mã sau xác định một hàm đơn giản có tên 8:
Hàm 8 có một tham số, được gọi là 0. Hàm bao gồm một câu lệnh cho biết trả về tham số của hàm (nghĩa là 0) nhân với chính nó. Câu lệnh 2 Chỉ định giá trị được trả về bởi hàm:Các tham số về cơ bản được truyền đến các hàm theo giá trị - vì vậy nếu mã trong phần thân của hàm gán một giá trị hoàn toàn mới cho một tham số được truyền cho hàm, sự thay đổi không được phản ánh trên toàn cầu hoặc trong mã được gọi là hàm đó.by value — so if the code within the body of a function assigns a completely new value to a parameter that was passed to the function, the change is not reflected globally or in the code which called that function. Khi bạn chuyển một đối tượng dưới dạng tham số, nếu hàm thay đổi thuộc tính của đối tượng, thay đổi đó có thể hiển thị bên ngoài hàm, như trong ví dụ sau:
Khi bạn chuyển một mảng làm tham số, nếu hàm thay đổi bất kỳ giá trị nào của mảng, thay đổi đó có thể hiển thị bên ngoài hàm, như trong ví dụ sau:
Biểu thức chức năngTrong khi khai báo hàm ở trên là một câu lệnh, các hàm cũng có thể được tạo bằng một biểu thức chức năng. Một chức năng như vậy có thể ẩn danh; Nó không phải có một cái tên. Ví dụ: hàm 8 có thể được định nghĩa là:anonymous; it does not have to have a name. For example, the function 8 could have been defined as:
Tuy nhiên, một tên có thể được cung cấp với một biểu thức chức năng. Cung cấp tên cho phép chức năng đề cập đến chính nó và cũng giúp dễ dàng xác định chức năng trong dấu vết ngăn xếp của trình gỡ lỗi:
Biểu thức chức năng thuận tiện khi chuyển một hàm như một đối số cho một hàm khác. Ví dụ sau đây hiển thị hàm 4 sẽ nhận chức năng là đối số thứ nhất và một mảng là đối số thứ hai:
Trong mã sau, hàm nhận được một hàm được xác định bởi biểu thức chức năng và thực thi nó cho mọi yếu tố của mảng nhận được dưới dạng đối số thứ hai:
Hàm trả về: 5.Trong JavaScript, một hàm có thể được xác định dựa trên một điều kiện. Ví dụ: định nghĩa chức năng sau đây xác định 6 chỉ khi 7 bằng 8:
Ngoài việc xác định các chức năng như được mô tả ở đây, bạn cũng có thể sử dụng hàm tạo 9 để tạo các chức năng từ một chuỗi trong thời gian chạy, giống như 0.Phương pháp là một hàm là thuộc tính của một đối tượng. Đọc thêm về các đối tượng và phương pháp trong làm việc với các đối tượng.method is a function that is a property of an object. Read more about objects and methods in Working with objects. Gọi chức năngXác định một chức năng không thực thi nó. Xác định nó đặt tên cho chức năng và chỉ định những việc cần làm khi hàm được gọi. Gọi hàm thực sự thực hiện các hành động được chỉ định với các tham số được chỉ định. Ví dụ: nếu bạn xác định chức năng 8, you could call it as follows:Câu lệnh trước gọi hàm với đối số là 2. Hàm thực thi các câu lệnh của nó và trả về giá trị 3.Các chức năng phải nằm trong phạm vi khi chúng được gọi, nhưng khai báo chức năng có thể được nâng lên (xuất hiện bên dưới cuộc gọi trong mã). Phạm vi của một khai báo hàm là hàm trong đó được khai báo (hoặc toàn bộ chương trình, nếu nó được khai báo ở cấp cao nhất). Các đối số của một hàm không giới hạn ở các chuỗi và số. Bạn có thể chuyển toàn bộ đối tượng cho một chức năng. Hàm 4 (được xác định trong làm việc với các đối tượng) là một ví dụ về hàm lấy một đối tượng làm đối số.Một chức năng có thể gọi chính nó. Ví dụ, đây là một chức năng tính toán các giai thừa một cách đệ quy:
Sau đó, bạn có thể tính toán các giai thừa của 5 đến 2 như sau:
Có nhiều cách khác để gọi các chức năng. Thường có các trường hợp một hàm cần được gọi là động hoặc số lượng đối số cho một hàm khác nhau hoặc trong đó bối cảnh của lệnh gọi hàm cần được đặt thành một đối tượng cụ thể được xác định trong thời gian chạy. Nó chỉ ra rằng các chức năng là các đối tượng của chúng - và đến lượt nó, các đối tượng này có các phương thức. (Xem đối tượng 9.) Các phương thức 8 và 9 có thể được sử dụng để đạt được mục tiêu này.Chức năng nâng caoXem xét ví dụ dưới đây: 0Mã này chạy mà không có bất kỳ lỗi nào, mặc dù hàm 0 được gọi trước khi được khai báo. Điều này là do trình thông dịch JavaScript nâng toàn bộ khai báo chức năng lên đầu phạm vi hiện tại, do đó mã trên tương đương với: 1Chức năng nâng chỉ hoạt động với các khai báo chức năng - không phải với các biểu thức chức năng. Mã dưới đây sẽ không hoạt động. 2Phạm vi chức năngCác biến được xác định bên trong một hàm không thể được truy cập từ bất cứ nơi nào bên ngoài hàm, bởi vì biến chỉ được xác định trong phạm vi của hàm. Tuy nhiên, một hàm có thể truy cập tất cả các biến và hàm được xác định bên trong phạm vi mà nó được xác định. Nói cách khác, một hàm được xác định trong phạm vi toàn cầu có thể truy cập tất cả các biến được xác định trong phạm vi toàn cầu. Một hàm được xác định bên trong một hàm khác cũng có thể truy cập tất cả các biến được xác định trong hàm cha của nó và bất kỳ biến nào khác mà hàm cha có quyền truy cập. 3Phạm vi và ngăn xếp chức năngĐệ quyMột chức năng có thể tham khảo và gọi chính nó. Có ba cách để một chức năng đề cập đến chính nó:
Ví dụ, hãy xem xét định nghĩa chức năng sau: 4Trong cơ thể chức năng, sau đây đều tương đương:
Một hàm tự gọi được gọi là hàm đệ quy. Trong một số cách, đệ quy tương tự như một vòng lặp. Cả hai thực thi cùng một mã nhiều lần và cả hai đều yêu cầu một điều kiện (để tránh một vòng lặp vô hạn, hoặc đúng hơn là đệ quy vô hạn trong trường hợp này). Ví dụ, hãy xem xét vòng lặp sau: 5Nó có thể được chuyển đổi thành khai báo chức năng đệ quy, theo sau là một cuộc gọi đến chức năng đó: 6Tuy nhiên, một số thuật toán không thể là các vòng lặp đơn giản. Ví dụ: nhận tất cả các nút của cấu trúc cây (như DOM) dễ dàng hơn thông qua đệ quy: 7So với hàm 5, mỗi cuộc gọi đệ quy thực hiện nhiều cuộc gọi đệ quy ở đây.Có thể chuyển đổi bất kỳ thuật toán đệ quy nào thành một thuật toán không nhận được, nhưng logic thường phức tạp hơn nhiều và làm như vậy đòi hỏi phải sử dụng ngăn xếp. Trong thực tế, việc đệ quy sử dụng một ngăn xếp: Chức năng ngăn xếp. Hành vi giống như ngăn xếp có thể được nhìn thấy trong ví dụ sau: 8Các chức năng và đóng cửa lồng nhauBạn có thể làm tổ một chức năng trong một chức năng khác. Hàm lồng nhau (bên trong) là riêng tư cho hàm (bên ngoài) của nó. Nó cũng tạo thành một đóng cửa. Đóng cửa là một biểu thức (phổ biến nhất là một hàm) có thể có các biến tự do cùng với một môi trường liên kết các biến đó ("đóng" biểu thức). Vì một hàm lồng nhau là một đóng cửa, điều này có nghĩa là một hàm lồng nhau có thể "kế thừa" các đối số và biến của hàm chứa của nó. Nói cách khác, hàm bên trong chứa phạm vi của hàm bên ngoài. Để tóm tắt:
Ví dụ sau đây cho thấy các chức năng lồng nhau: 9Vì hàm bên trong hình thành việc đóng, bạn có thể gọi hàm bên ngoài và chỉ định các đối số cho cả hàm bên ngoài và bên trong: 0Bảo tồn các biếnLưu ý cách 6 được bảo tồn khi 7 được trả lại. Một đóng cửa phải lưu giữ các đối số và biến trong tất cả các phạm vi tham chiếu. Vì mỗi cuộc gọi cung cấp các đối số có khả năng khác nhau, nên việc đóng cửa mới được tạo cho mỗi cuộc gọi đến 8. Bộ nhớ chỉ có thể được giải phóng khi 7 trả về không còn có thể truy cập được.Điều này không khác với việc lưu trữ các tài liệu tham khảo trong các đối tượng khác, nhưng thường ít rõ ràng hơn vì người ta không đặt các tài liệu tham khảo trực tiếp và không thể kiểm tra chúng. Nhân các chức năng được lồngCác chức năng có thể được nhân lên. Ví dụ:
Do đó, việc đóng cửa có thể chứa nhiều phạm vi; Chúng đệ quy chứa phạm vi của các chức năng chứa nó. Đây được gọi là chuỗi phạm vi. (Lý do nó được gọi là "chuỗi" được giải thích sau.) Xem xét ví dụ sau: 1Trong ví dụ này, 2 truy cập ________ 71's 6 và ________ 70's 6.Điều này có thể được thực hiện bởi vì:
Điều ngược lại, tuy nhiên, không đúng. 0 không thể truy cập 2, vì 0 không thể truy cập bất kỳ đối số hoặc biến nào của 1, mà 2 là một biến của. Do đó, 2 vẫn riêng tư chỉ với 1.Tên xung độtKhi hai đối số hoặc biến trong phạm vi đóng có cùng tên, có một cuộc xung đột tên. Nhiều phạm vi lồng nhau được ưu tiên. Vì vậy, phạm vi trong cùng là ưu tiên cao nhất, trong khi phạm vi ngoài cùng chiếm thấp nhất. Đây là chuỗi phạm vi. Đầu tiên trong chuỗi là phạm vi trong cùng, và cuối cùng là phạm vi ngoài cùng. Xem xét những điều sau: 2Xung đột tên xảy ra tại câu lệnh 14 và nằm giữa tham số của ____ 67 6 và ________ 68 của biến 6. Chuỗi phạm vi ở đây là { 7, 8, đối tượng toàn cầu}. Do đó, ________ 67 6 có mức độ ưu tiên so với ____ ____ 68 và 25 (____ ____ 67 6) được trả lại thay vì 28 (____ ____ 68 6).Đóng cửaĐóng cửa là một trong những tính năng mạnh mẽ nhất của JavaScript. JavaScript cho phép làm tổ của các hàm và cấp cho hàm bên trong truy cập đầy đủ cho tất cả các biến và hàm được xác định bên trong hàm bên ngoài (và tất cả các biến và hàm khác mà hàm bên ngoài có quyền truy cập). Tuy nhiên, hàm bên ngoài không có quyền truy cập vào các biến và hàm được xác định bên trong hàm bên trong. Điều này cung cấp một loại đóng gói cho các biến của hàm bên trong. Ngoài ra, vì hàm bên trong có quyền truy cập vào phạm vi của hàm bên ngoài, các biến và hàm được xác định ở hàm bên ngoài sẽ sống lâu hơn thời gian thực hiện hàm bên ngoài, nếu hàm bên trong quản lý để tồn tại ngoài vòng đời của bên ngoài hàm số. Một đóng cửa được tạo ra khi hàm bên trong được cung cấp cho bất kỳ phạm vi nào bên ngoài hàm bên ngoài. 3Nó có thể phức tạp hơn nhiều so với mã trên. Một đối tượng chứa các phương thức để thao tác các biến bên trong của hàm bên ngoài có thể được trả về. 4Trong mã trên, biến 31 của hàm bên ngoài có thể truy cập được vào các hàm bên trong và không có cách nào khác để truy cập các biến bên trong ngoại trừ thông qua các hàm bên trong. Các biến bên trong của các hàm bên trong hoạt động như các cửa hàng an toàn cho các đối số và biến bên ngoài. Họ giữ dữ liệu "liên tục" và "đóng gói" cho các hàm bên trong hoạt động. Các chức năng thậm chí không phải được gán cho một biến hoặc có tên. 5Lưu ý: Có một số cạm bẫy cần chú ý khi sử dụng đóng cửa! There are a number of pitfalls to watch out for when using closures! Nếu một hàm kèm theo định nghĩa một biến có cùng tên với một biến trong phạm vi bên ngoài, thì không có cách nào để tham khảo biến trong phạm vi bên ngoài một lần nữa. . 6Sử dụng đối tượng đối sốCác đối số của một hàm được duy trì trong một đối tượng giống như mảng. Trong một chức năng, bạn có thể giải quyết các đối số được truyền cho nó như sau: trong đó 32 là số thứ tự của đối số, bắt đầu từ 8. Vì vậy, đối số đầu tiên được truyền cho một hàm sẽ là 34. Tổng số đối số được biểu thị bằng 35.Sử dụng đối tượng 36, bạn có thể gọi một hàm có nhiều đối số hơn là chính thức được tuyên bố chấp nhận. Điều này thường hữu ích nếu bạn không biết trước có bao nhiêu đối số sẽ được chuyển cho chức năng. Bạn có thể sử dụng 35 để xác định số lượng đối số thực sự được truyền vào hàm và sau đó truy cập mỗi đối số bằng đối tượng 36.Ví dụ, hãy xem xét một chức năng kết hợp một số chuỗi. Đối số chính thức duy nhất cho hàm là một chuỗi chỉ định các ký tự tách các mục thành Concatenate. Hàm được định nghĩa như sau: 7Bạn có thể chuyển bất kỳ số lượng đối số nào cho hàm này và nó kết hợp từng đối số thành một chuỗi "danh sách": 8Lưu ý: Biến 36 variable is "array-like", but not an array. It is array-like in that it has a numbered index and a 40 property. However, it does not
possess all of the array-manipulation methods.Xem đối tượng 9 trong tham chiếu JavaScript để biết thêm thông tin.Tham số chức năngCó hai loại cú pháp tham số đặc biệt: tham số mặc định và tham số REST. Tham số mặc địnhTrong JavaScript, các tham số của các hàm mặc định là 42. Tuy nhiên, trong một số tình huống có thể hữu ích để đặt một giá trị mặc định khác. Đây chính xác là những gì tham số mặc định làm.Trước đây, chiến lược chung để thiết lập mặc định là kiểm tra các giá trị tham số trong phần thân của hàm và gán một giá trị nếu chúng là 42.Trong ví dụ sau, nếu không có giá trị nào được cung cấp cho 44, giá trị của nó sẽ là 42 khi đánh giá 46 và một cuộc gọi đến 47 thường sẽ trả lại 48. Tuy nhiên, điều này được ngăn chặn bởi dòng thứ hai trong ví dụ này: 9Với các tham số mặc định, kiểm tra thủ công trong thân chức năng không còn cần thiết nữa. Bạn có thể đặt 5 làm giá trị mặc định cho 44 trong đầu hàm: 0Để biết thêm chi tiết, hãy xem các tham số mặc định trong tham chiếu. Tham số nghỉCú pháp tham số REST cho phép chúng tôi biểu diễn một số lượng đối số không xác định dưới dạng một mảng. Trong ví dụ sau, hàm 47 sử dụng các tham số REST để thu thập các đối số từ cái thứ hai đến cuối. Chức năng sau đó nhân lên những điều này với đối số đầu tiên. 1Hàm mũi tênMột biểu thức hàm mũi tên (còn được gọi là mũi tên chất béo để phân biệt với cú pháp giả thuyết 52 trong JavaScript trong tương lai) có cú pháp ngắn hơn so với biểu thức chức năng và không có 53, 36, 55 hoặc ____. Các hàm mũi tên luôn ẩn danh.Hai yếu tố ảnh hưởng đến việc giới thiệu các hàm mũi tên: các chức năng ngắn hơn và không ràng buộc của 53.Chức năng ngắn hơnTrong một số mẫu chức năng, các chức năng ngắn hơn được chào đón. So sánh: 2Không tách biệt điều nàyCho đến khi các chức năng mũi tên, mọi hàm mới đều xác định giá trị 53 của chính nó (một đối tượng mới trong trường hợp hàm tạo, không xác định trong các gọi hàm chế độ nghiêm ngặt, đối tượng cơ sở nếu hàm được gọi là "phương thức đối tượng", v.v.). Điều này đã được chứng minh là ít hơn lý tưởng với một phong cách lập trình hướng đối tượng. 3Trong Ecmascript 3/5, vấn đề này đã được khắc phục bằng cách gán giá trị trong 53 cho một biến có thể được đóng lại. 4Ngoài ra, một hàm ràng buộc có thể được tạo ra để giá trị 53 thích hợp sẽ được chuyển đến hàm 61.Một hàm mũi tên không có 53 riêng; Giá trị 53 của bối cảnh thực thi kèm theo được sử dụng. Do đó, trong mã sau, 53 trong hàm được truyền đến 65 có cùng giá trị với 53 trong hàm kèm theo: 5Các chức năng được xác định trướcJavaScript có một số chức năng tích hợp, cấp cao nhất: 0Phương pháp 0 đánh giá mã JavaScript được biểu thị dưới dạng chuỗi. 0 method evaluates JavaScript code represented as a string. 69Hàm 69 toàn cầu xác định liệu giá trị được truyền có phải là số hữu hạn hay không. Nếu cần, tham số trước tiên được chuyển đổi thành một số. 69 function determines whether the passed value is a finite number. If needed, the parameter is first converted to a number. 71Hàm 71 xác định xem một giá trị có phải là 48 hay không. Lưu ý: Sự ép buộc bên trong hàm 74 có các quy tắc thú vị; Bạn có thể muốn sử dụng 75 để xác định xem giá trị không phải là một số. 71 function determines whether a value is 48 or not. Note: coercion inside the 74 function has interesting rules; you may alternatively want to use
75 to determine if the value is Not-A-Number. 76Hàm 76 phân tích đối số chuỗi và trả về số điểm nổi. 76 function parses a string argument and returns a floating point number. 78Hàm 78 phân tích đối số chuỗi và trả về một số nguyên của radix được chỉ định (cơ sở trong các hệ thống số toán học). 78 function parses a string argument and returns an integer of the specified radix (the base in mathematical numeral systems). 80Hàm 80 giải mã một định danh tài nguyên thống nhất (URI) được tạo trước đây bởi 82 hoặc bằng một thói quen tương tự. 80 function
decodes a Uniform Resource Identifier (URI) previously created by 82 or by a similar routine. 83Phương pháp 83 giải mã một thành phần Định danh tài nguyên đồng đều (URI) được tạo trước đây bởi 85 hoặc bằng một thói quen tương tự. 83 method decodes a Uniform Resource Identifier (URI) component
previously created by 85 or by a similar routine. 86Phương thức 86 mã hóa một định danh tài nguyên đồng đều (URI) bằng cách thay thế từng phiên bản của một số ký tự nhất định bằng một, hai, ba hoặc bốn chuỗi thoát đại diện cho mã hóa UTF-8 của ký tự (sẽ chỉ là bốn chuỗi thoát cho hai các ký tự "thay thế"). 86 method encodes a Uniform Resource Identifier (URI) by replacing each instance of certain characters by one, two,
three, or four escape sequences representing the UTF-8 encoding of the character (will only be four escape sequences for characters composed of two "surrogate" characters). 88Phương thức 88 mã hóa thành phần Định danh tài nguyên (URI) đồng đều bằng cách thay thế từng phiên bản của một số ký tự nhất định bằng một, hai, ba hoặc bốn chuỗi thoát đại diện cho mã hóa UTF-8 của ký tự (sẽ chỉ là bốn chuỗi thoát cho các ký tự bao gồm hai ký tự "thay thế"). 88 method encodes a Uniform Resource Identifier (URI) component by replacing each instance of certain characters
by one, two, three, or four escape sequences representing the UTF-8 encoding of the character (will only be four escape sequences for characters composed of two "surrogate" characters). 90Phương pháp 90 không dùng tính tính toán một chuỗi mới trong đó một số ký tự đã được thay thế bằng chuỗi thoát thập lục phân. Thay vào đó, sử dụng 82 hoặc 85. 90 method computes a new string in which certain characters have been replaced by a hexadecimal escape sequence.
Use 82 or 85 instead. 94Phương pháp 94 không dùng tính tính toán một chuỗi mới trong đó các chuỗi thoát thập lục phân được thay thế bằng ký tự mà nó đại diện. Các chuỗi thoát có thể được giới thiệu bởi một hàm như 96. Vì 94 không được dùng để sử dụng 80 hoặc 99. 94 method
computes a new string in which hexadecimal escape sequences are replaced with the character that it represents. The escape sequences might be introduced by a function like 96. Because 94 is deprecated, use 80 or
99 instead.
Làm thế nào để bạn có được một biến bên trong một hàm?Để tạo một biến toàn cầu bên trong một hàm, bạn có thể sử dụng từ khóa toàn cầu.use the global keyword.
Bạn có thể xác định một biến trong một hàm javascript không?Một hàm trong JavaScript xác định một phạm vi cho các biến được khai báo bằng Var, LET và Const.Bất kỳ biến nào được khai báo trong chức năng đó chỉ có thể truy cập được từ hàm đó và bất kỳ chức năng lồng nhau nào. . Any variable declared within that function is only accessible from that function and any nested functions.
Làm thế nào bạn có thể truy cập một biến toàn cầu bên trong hàm JavaScript?Để khai báo các biến toàn cầu của JavaScript bên trong hàm, bạn cần sử dụng đối tượng cửa sổ ... hàm m () {. cửa sổ.value = 100; // khai báo biến toàn cầu theo đối tượng cửa sổ .. hàm n () {. cảnh báo (cửa sổ. value); // truy cập biến toàn cầu từ các chức năng khác .. Làm thế nào để bạn tham khảo một biến trong JavaScript?Trong JavaScript, không thể có một tham chiếu từ biến này sang biến khác.Và, chỉ các giá trị hợp chất (đối tượng, mảng) có thể được gán bằng tham chiếu.Điểm mấu chốt: Giá trị loại được gán cho một biến quyết định xem giá trị được lưu trữ với gán từng giá trị hoặc tham chiếu.only compound values (Object, Array) can be assigned by reference. Bottom line: The typeof value assigned to a variable decides whether the value is stored with assign-by-value or assign-by-reference. |