Xin chào các bạn, trong bài viết này chúng ta sẽ xem xét cách giải bài toán How To Get Variable Value Outside Function In Javascript bằng ngôn ngữ lập trình
/* Not putting "var", "let" or "const" will make the variable Public And usable outside a functin */ function Play[]{ Video = 12 // Seconds var Length = 15 } console.log[Video] // Prints 12 console.log[Length] // "Lenght" is undefined
Chúng tôi đã chỉ ra cách giải quyết vấn đề Cách lấy giá trị biến bên ngoài hàm trong Javascript bằng cách xem xét một số trường hợp khác nhau
Làm cách nào để bạn truy cập một biến từ bên ngoài hàm trong JavaScript?
Để truy cập một biến bên ngoài một hàm trong JavaScript, hãy làm cho biến của bạn có thể truy cập được từ bên ngoài hàm. Đầu tiên, khai báo bên ngoài hàm, sau đó sử dụng bên trong hàm. Bạn không thể truy cập các biến được khai báo bên trong hàm từ bên ngoài hàm. 26-May-2022
Có thể sử dụng var bên ngoài một hàm không?
Các biến được khai báo bên ngoài bất kỳ chức năng và khối nào là toàn cầu và được cho là có Phạm vi toàn cầu. Điều này có nghĩa là bạn có thể truy cập chúng từ bất kỳ phần nào của chương trình JavaScript hiện tại. Bạn có thể sử dụng var, let và const để khai báo các biến toàn cục. Nhưng bạn không nên làm điều đó quá thường xuyên. 11-Jan-2022
Làm thế nào để bạn gọi một biến bên trong một hàm trong JavaScript?
Vì vậy, cách dễ nhất để làm cho biến của bạn có thể truy cập được từ bên ngoài hàm là trước tiên hãy khai báo bên ngoài hàm, sau đó sử dụng nó bên trong hàm
- hàm một[]{ var a;
- và một; . làm việc gì đó[]
- và một;
Biến nào được khai báo bên ngoài hàm trong JavaScript?
Biến toàn cục JavaScript
Làm thế nào để bạn gọi một biến bên ngoài một chức năng?
Sử dụng cú pháp thuộc tính đối tượng để truy cập một biến bên ngoài hàm. Trong một hàm có tên func, hãy sử dụng cú pháp func. biến = giá trị để lưu trữ giá trị trong biến như một thuộc tính của func. Để truy cập giá trị bên ngoài func , hãy sử dụng func[] để chạy func , sau đó sử dụng cú pháp function_name
Làm cách nào để bạn truy cập các biến cục bộ bên ngoài phạm vi?
Các biến cục bộ không thể được truy cập bên ngoài khai báo hàm. Biến toàn cục và biến cục bộ có thể trùng tên mà không ảnh hưởng đến nhau
Tôi nên sử dụng VAR hay cho phép JavaScript?
Tuy nhiên, sự khác biệt chính giữa hai loại này là let xử lý phạm vi khối trong khi var xử lý phạm vi toàn cục hoặc phạm vi chức năng tùy thuộc vào nơi nó được khai báo. Miễn là biến của bạn không được khai báo trong bất kỳ hàm nào, var có thể được sử dụng lại ở bất kỳ đâu khác trong mã của bạn. 03-Feb-2020
Biến được khai báo bên ngoài tất cả các hàm là gì?
Các biến toàn cục được định nghĩa bên ngoài tất cả các hàm, thường ở đầu chương trình
VAR có phải là toàn cầu trong JavaScript không?
Câu lệnh var khai báo một biến phạm vi chức năng hoặc phạm vi toàn cầu, tùy chọn khởi tạo nó thành một giá trị
Làm cách nào bạn có thể sử dụng các biến toàn cục để phản ánh sự thay đổi bên ngoài hàm?
Nếu hàm của bạn có một biến cục bộ trùng tên với biến toàn cục và bạn muốn sửa đổi biến toàn cục bên trong hàm thì hãy sử dụng từ khóa 'global' trước tên biến khi bắt đầu hàm i. e. Như bạn có thể thấy sửa đổi được thực hiện đối với tổng biến toàn cục hiện cũng hiển thị bên ngoài hàm. 30-Aug-2021
Bản tóm tắt. trong hướng dẫn này, bạn sẽ học cách sử dụng từ khóa JavaScript
8 để khai báo các biến trong phạm vi khốiCode language: JavaScript [javascript]
if[condition] { // inside a block }
Giới thiệu về từ khóa let trong JavaScript
Trong ES5, khi bạn khai báo một biến bằng từ khóa
9, phạm vi của biến là toàn cục hoặc cục bộ. Nếu bạn khai báo một biến bên ngoài hàm, phạm vi của biến là toàn cục. Khi bạn khai báo một biến bên trong một hàm, phạm vi của biến là cục bộCode language: JavaScript [javascript]
if[condition] { // inside a block }
ES6 cung cấp một cách khai báo biến mới bằng cách sử dụng từ khóa
8. Từ khóaCode language: JavaScript [javascript]
if[condition] { // inside a block }
8 tương tự như từ khóaCode language: JavaScript [javascript]
if[condition] { // inside a block }
9, ngoại trừ các biến này là phạm vi bị chặn. Ví dụCode language: JavaScript [javascript]
if[condition] { // inside a block }
Code language: JavaScript [javascript]
let variable_name;
Trong JavaScript, các khối được biểu thị bằng dấu ngoặc nhọn
3 , ví dụ: ________ 74, ________ 75, ________ 76, ________ 77,Code language: JavaScript [javascript]
let x = 10; if [x == 10] { let x = 20; console.log[x]; // 20: reference x inside the block } console.log[x]; // 10: reference at the begining of the script
8, v.v.Code language: JavaScript [javascript]
let x = 10; if [x == 10] { let x = 20; console.log[x]; // 20: reference x inside the block } console.log[x]; // 10: reference at the begining of the script
Code language: JavaScript [javascript]
if[condition] { // inside a block }
Xem ví dụ sau
Code language: JavaScript [javascript]
let x = 10; if [x == 10] { let x = 20; console.log[x]; // 20: reference x inside the block } console.log[x]; // 10: reference at the begining of the script
Cách thức hoạt động của kịch bản
- Đầu tiên, khai báo một biến
9 và khởi tạo giá trị của nó là 10
Code language: JavaScript [javascript]let x = 10; if [x == 10] { let x = 20; console.log[x]; // 20: reference x inside the block } console.log[x]; // 10: reference at the begining of the script
- Thứ hai, khai báo một biến mới có cùng tên
9 bên trong khối
Code language: JavaScript [javascript]let x = 10; if [x == 10] { let x = 20; console.log[x]; // 20: reference x inside the block } console.log[x]; // 10: reference at the begining of the script
71 nhưng có giá trị ban đầu là 20
Code language: JavaScript [javascript]if[condition] { // inside a block }
- Thứ ba, xuất giá trị của biến
9 bên trong và sau khối
Code language: JavaScript [javascript]let x = 10; if [x == 10] { let x = 20; console.log[x]; // 20: reference x inside the block } console.log[x]; // 10: reference at the begining of the script
71
Code language: JavaScript [javascript]if[condition] { // inside a block }
Bởi vì từ khóa
8 khai báo một biến trong phạm vi khối, nên biếnCode language: JavaScript [javascript]
if[condition] { // inside a block }
9 bên trong khốiCode language: JavaScript [javascript]
let x = 10; if [x == 10] { let x = 20; console.log[x]; // 20: reference x inside the block } console.log[x]; // 10: reference at the begining of the script
71 là một biến mới và nó che khuất biếnCode language: JavaScript [javascript]
if[condition] { // inside a block }
9 được khai báo ở đầu tập lệnh. Do đó, giá trị củaCode language: JavaScript [javascript]
let x = 10; if [x == 10] { let x = 20; console.log[x]; // 20: reference x inside the block } console.log[x]; // 10: reference at the begining of the script
9 trong bảng điều khiển làCode language: JavaScript [javascript]
let x = 10; if [x == 10] { let x = 20; console.log[x]; // 20: reference x inside the block } console.log[x]; // 10: reference at the begining of the script
79Code language: JavaScript [javascript]
if[condition] { // inside a block }
Khi công cụ JavaScript hoàn thành việc thực thi khối
71, biếnCode language: JavaScript [javascript]
if[condition] { // inside a block }
9 bên trong khốiCode language: JavaScript [javascript]
let x = 10; if [x == 10] { let x = 20; console.log[x]; // 20: reference x inside the block } console.log[x]; // 10: reference at the begining of the script
71 nằm ngoài phạm vi. Do đó, giá trị của biến ____79 theo sau khốiCode language: JavaScript [javascript]
if[condition] { // inside a block }
71 là 10Code language: JavaScript [javascript]
if[condition] { // inside a block }
JavaScript let và đối tượng toàn cục
Khi bạn khai báo một biến toàn cục bằng từ khóa
9, bạn thêm biến đó vào danh sách thuộc tính của đối tượng toàn cầu. Trong trường hợp của trình duyệt web, đối tượng chung làCode language: JavaScript [javascript]
if[condition] { // inside a block }
26. Ví dụCode language: JavaScript [javascript]
if[condition] { // inside a block }
7Code language: JavaScript [javascript]
if[condition] { // inside a block }
Tuy nhiên, khi bạn sử dụng từ khóa
8 để khai báo một biến, thì biến đó không được gắn vào đối tượng toàn cục như một thuộc tính. Ví dụCode language: JavaScript [javascript]
if[condition] { // inside a block }
2Code language: JavaScript [javascript]
if[condition] { // inside a block }
Chức năng gọi lại và cho phép JavaScript trong một vòng lặp for
Xem ví dụ sau
6Code language: JavaScript [javascript]
if[condition] { // inside a block }
Mục đích của mã là xuất các số từ 0 đến 4 vào bảng điều khiển mỗi giây. Tuy nhiên, nó xuất ra số
28 năm lầnCode language: JavaScript [javascript]
if[condition] { // inside a block }
8
if[condition] { // inside a block }
Code language: JavaScript [javascript]
Trong ví dụ này, biến
29 là biến toàn cục. Sau vòng lặp, giá trị của nó là 5. Khi các hàm gọi lại được truyền cho hàmCode language: JavaScript [javascript]
if[condition] { // inside a block }
60 thực thi, chúng tham chiếu đến cùng một biếnCode language: JavaScript [javascript]
if[condition] { // inside a block }
29 với giá trị 5Code language: JavaScript [javascript]
if[condition] { // inside a block }
Trong ES5, bạn có thể khắc phục sự cố này bằng cách tạo một phạm vi khác để mỗi hàm gọi lại tham chiếu đến một biến mới. Và để tạo một phạm vi mới, bạn cần tạo một chức năng. Thông thường, bạn sử dụng mẫu IIFE như sau
2Code language: JavaScript [javascript]
if[condition] { // inside a block }
đầu ra
3Code language: JavaScript [javascript]
if[condition] { // inside a block }
Trong ES6, từ khóa
8 khai báo một biến mới trong mỗi lần lặp lại vòng lặp. Do đó, bạn chỉ cần thay từ khóaCode language: JavaScript [javascript]
if[condition] { // inside a block }
9 bằng từ khóaCode language: JavaScript [javascript]
if[condition] { // inside a block }
8 là có thể khắc phục được sự cốCode language: JavaScript [javascript]
if[condition] { // inside a block }
7Code language: JavaScript [javascript]
if[condition] { // inside a block }
Để tạo mã hoàn toàn theo phong cách ES6, bạn có thể sử dụng chức năng mũi tên như sau
0Code language: JavaScript [javascript]
if[condition] { // inside a block }
Lưu ý rằng bạn sẽ tìm hiểu thêm về các hàm mũi tên trong hướng dẫn sau
khai báo lại
Từ khóa
9 cho phép bạn khai báo lại một biến mà không gặp vấn đề gìCode language: JavaScript [javascript]
if[condition] { // inside a block }
1Code language: JavaScript [javascript]
if[condition] { // inside a block }
Tuy nhiên, khai báo lại một biến bằng từ khóa
8 sẽ dẫn đến lỗiCode language: JavaScript [javascript]
if[condition] { // inside a block }
2Code language: JavaScript [javascript]
if[condition] { // inside a block }
Đây là thông báo lỗi
3Code language: JavaScript [javascript]
if[condition] { // inside a block }
JavaScript let biến và cẩu
Hãy xem xét ví dụ sau
4Code language: JavaScript [javascript]
if[condition] { // inside a block }
Mã này gây ra lỗi
5Code language: JavaScript [javascript]
if[condition] { // inside a block }
Trong ví dụ này, việc truy cập biến
67 trước khi khai báo sẽ gây ra lỗi
if[condition] { // inside a block }
Code language: JavaScript [javascript]
68. Bạn có thể nghĩ rằng một khai báo biến sử dụng từ khóaCode language: JavaScript [javascript]
if[condition] { // inside a block }
8 không nâng lên, nhưng nó cóCode language: JavaScript [javascript]
if[condition] { // inside a block }
Trên thực tế, công cụ JavaScript sẽ nâng một biến được khai báo bằng từ khóa
8 lên đầu khối. Tuy nhiên, công cụ JavaScript không khởi tạo biến. Do đó, khi bạn tham chiếu một biến chưa được khởi tạo, bạn sẽ nhận được mộtCode language: JavaScript [javascript]
if[condition] { // inside a block }
68Code language: JavaScript [javascript]
if[condition] { // inside a block }
Vùng chết tạm thời [TDZ]
Một biến được khai báo bởi từ khóa
8 có cái gọi là vùng chết tạm thời [TDZ]. TDZ là thời gian từ khi bắt đầu tạo khối cho đến khi khai báo biến được xử lýCode language: JavaScript [javascript]
if[condition] { // inside a block }
Ví dụ sau minh họa rằng vùng chết tạm thời dựa trên thời gian, không dựa trên vị trí
6Code language: JavaScript [javascript]
if[condition] { // inside a block }
trong ví dụ này
Đầu tiên, dấu ngoặc nhọn bắt đầu phạm vi khối mới, do đó, TDZ bắt đầu
Thứ hai, biểu thức hàm
83 truy cập biếnCode language: JavaScript [javascript]
if[condition] { // inside a block }
84. Tuy nhiên hàmCode language: JavaScript [javascript]
if[condition] { // inside a block }
83 vẫn chưa được thực thiCode language: JavaScript [javascript]
if[condition] { // inside a block }
Thứ ba, khai báo biến
84 và khởi tạo giá trị của nó thànhCode language: JavaScript [javascript]
if[condition] { // inside a block }
87. Thời gian từ khi bắt đầu phạm vi khối cho đến khi biếnCode language: JavaScript [javascript]
if[condition] { // inside a block }
84 được truy cập được gọi là vùng chết tạm thời. Khi công cụ JavaScript xử lý khai báo, TDZ kết thúcCode language: JavaScript [javascript]
if[condition] { // inside a block }
Cuối cùng, gọi hàm
83 truy cập biếnCode language: JavaScript [javascript]
if[condition] { // inside a block }
84 bên ngoài TDZCode language: JavaScript [javascript]
if[condition] { // inside a block }
Lưu ý rằng nếu bạn truy cập một biến được khai báo bởi từ khóa
8 trong TDZ, bạn sẽ nhận được mộtCode language: JavaScript [javascript]
if[condition] { // inside a block }
68 như minh họa trong ví dụ sauCode language: JavaScript [javascript]
if[condition] { // inside a block }
7Code language: JavaScript [javascript]
if[condition] { // inside a block }
Lưu ý rằng biến
23 là biến không tồn tại, do đó, kiểu của nó là không xác địnhCode language: JavaScript [javascript]
if[condition] { // inside a block }
Vùng chết tạm thời ngăn bạn vô tình tham chiếu đến một biến trước khi khai báo