0:00:00.764,0:00:03.070 Giờ ta đã nắm vững các kiến thức cơ bản về hàm, 0:00:03.070,0:00:07.396 Tôi muốn nói về một chủ đề có thể hơi rắc rối: 0:00:07.396,0:00:10.984 sự khác biệt giữa các biến cục bộ (local) và toàn cục (global). 0:00:11.374,0:00:14.179 Những điều này có thể vô nghĩa với bạn vào lúc này. 0:00:14.179,0:00:16.364 Như vậy, hãy bắt đầu với một ví dụ. 0:00:16.364,0:00:18.110 Tôi đã viết chương trình này ở đây để chỉ cho bạn 0:00:18.110,0:00:20.346 Tôi đã cao lên bao nhiêu inch khi còn nhỏ. 0:00:20.506,0:00:22.087 Vì mỗi người lớn lên với tốc độ phát triển khác nhau, 0:00:22.087,0:00:24.458 Tôi đã viết ra hàm này, calcInches, 0:00:24.458,0:00:27.264 trong đó ta có thể truyền vào startAge và endAge, 0:00:27.264,0:00:29.160 và inchPerYear, 0:00:29.700,0:00:32.406 và sau đó nó sẽ tính tổng cộng tôi đã cao lên 0:00:32.406,0:00:34.294 bao nhiêu inch trong thời gian đó. 0:00:34.874,0:00:36.932 . . . và trả về kết quả bất cứ khi nào được gọi. 0:00:37.362,0:00:40.093 Như vậy, bạn có thể thấy ở đây từ 0 đến 8 năm, 0:00:40.093,0:00:44.354 Tôi gọi calcInches và tôi truyền vào 0, 8 và 2.5, 0:00:44.354,0:00:47.717 bởi vì tôi đã cao lên khoảng 2,5 inch mỗi năm. 0:00:48.297,0:00:51.904 Và, nó tính toán, và bạn có thể thấy nó trả về 20. 0:00:52.171,0:00:57.939 Sau đó, từ 8 đến 16, tôi gọi nó 'từ', và tôi truyền vào nó 8 và 16 và sau đó 2 0:00:57.939,0:01:01.133 bởi vì tôi đã không lớn lên quá nhiều và bạn có thể thấy nó trả ra 16. 0:01:01.913,0:01:05.312 Như vậy, trông gọn gàng đấy, nhưng giờ tôi muốn thực sự hiển thị 0:01:05.312,0:01:08.071 Tổng cộng tôi đã cao thêm bao nhiêu inch. 0:01:08.771,0:01:13.599 Vậy làm thế nào để tôi làm điều đó? Vâng, tôi có thể bắt đầu bằng cách đọc code 0:01:13.599,0:01:16.697 và suy nghĩ, "Hmm, ta có những giá trị nào ở đây?" 0:01:17.045,0:01:19.922 Tôi có thứ gì đó kiểu như biểu diễn tổng số inch? 0:01:20.582,0:01:26.038 Chà, tôi có biến totalInches này bên trong hàm calcInches, 0:01:26.038,0:01:30.560 vì vậy tôi chỉ có thể trả racái đó, xem nó nói gì; bắt đầu từ đó; 0:01:30.560,0:01:36.440 Như vậy, hãy gõ text(totalInches, 10, 200) và đặt nó xuống dưới. 0:01:36.440,0:01:38.455 Được rồi, hãy xem, ta có gì? 0:01:38.455,0:01:40.942 Oh, o-oh, ta đã có 'Oh không!' bạn thân mến. 0:01:40.942,0:01:42.939 Nó nói có một vấn đề. 0:01:42.939,0:01:45.556 totalInches không được định nghĩa (undefined). 0:01:45.556,0:01:47.624 Chà, thật lạ, vì ta 0:01:47.624,0:01:51.622 định nghĩa totalInches ngay tại đây, phải không? var totalInches =. 0:01:51.622,0:01:54.423 Vâng, vấn đề là ta đã định nghĩa 0:01:54.423,0:01:59.114 totalInches bên trong một hàm, trên dòng này ở đây. 0:01:59.114,0:02:01.854 Và khi ta khai báo một biến bên trong một hàm, 0:02:01.854,0:02:04.314 nó được coi là một biến cục bộ. 0:02:05.234,0:02:09.076 Nó chỉ tồn tại bên trong hàm này ở đây (calcInches). 0:02:09.076,0:02:12.945 Và code bên ngoài hàm, tất cả chỗ này, không thể thấy 0:02:12.945,0:02:15.794 biến cục bộ bên trong các hàm. 0:02:15.794,0:02:18.194 Nó chỉ thấy những gì được trả ra mà thôi. 0:02:18.194,0:02:21.224 Nó chỉ thấy giá trị chứ không phải là biến đó. 0:02:21.224,0:02:24.767 Như vậy, khi ta cố gắng sử dụng totalInches bên ngoài hàm, 0:02:24.767,0:02:26.250 máy tính không biết nó là gì, 0:02:26.250,0:02:28.596 và nói 'Này, tôi chưa bao giờ thấy biến này trước đây. 0:02:28.596,0:02:31.072 Nó không được định nghĩa. Tôi không thể hiển thị nó. ' 0:02:32.202,0:02:34.610 Như vậy, có một cách mà ta có thể làm 0:02:34.610,0:02:37.198 để code bên ngoài có thể thấy biến này. 0:02:37.398,0:02:42.487 Và đó là khi ta biến một biến cục bộ thành một biến toàn cục. 0:02:42.736,0:02:46.879 Ta có thể làm điều đó bằng cách đặt định nghĩa bên ngoài hàm, 0:02:47.539,0:02:50.042 vào cái gọi là phạm vi toàn cục. 0:02:51.252,0:02:54.322 Và giờ, bên trong hàm, tất cả ta đang làm 0:02:54.322,0:02:58.342 là thay đổi giá trị của nó trong mỗi lần gọi, mà không định nghĩa và khai báo nó. 0:02:58.632,0:03:02.484 Như vậy, bạn có thể thấy rằng nó ghi 'Tổng số chiều cao trong suốt cuộc đời: 16' 0:03:02.756,0:03:06.158 Như vậy, nó tìm thấy biến vì ta đã biến nó thành một biến toàn cục. 0:03:06.648,0:03:09.515 Nhưng nó không thực sự là giá trị mà ta đang tìm kiếm. 0:03:09.625,0:03:11.552 Đó chỉ là giá trị gần nhất. 0:03:11.552,0:03:13.938 Và đó là vì mỗi lần gọi hàm này, 0:03:13.938,0:03:17.794 nó gán totalInches cho bất cứ giá trị nào tính toán tại thời điểm đó. Đúng không? 0:03:18.714,0:03:21.930 Như vậy, những gì ta thực sự muốn làm là, ta muốn một biến mới 0:03:21.930,0:03:24.662 chỉ sử dụng để lưu trữ toàn cục 0:03:24.662,0:03:28.464 những gì ta thêm vào sau mỗi lần tính toán, bạn biết đấy, tổng số cho một vùng, 0:03:29.228,0:03:32.563 Như vậy, hãy biến cái này trở thành một biến cục bộ, 0:03:33.663,0:03:37.628 và hãy tạo một biến toàn cục mới gọi là lifeInches, 0:03:38.168,0:03:40.034 và ta sẽ bắt đầu nó ở giá trị 0 0:03:40.634,0:03:45.381 Và sau đó bên trong hàm, ta sẽ thêm vào biến toàn cục này 0:03:45.381,0:03:49.478 bằng cách gõ lifeInches + = totalInches. 0:03:49.478,0:03:51.586 Như vậy, ta sẽ cộng vào, tuy nhiên phải tính toán nhiều 0:03:51.586,0:03:52.954 mỗi lần ta gọi hàm này, 0:03:52.954,0:03:56.403 ta sẽ cộng nó vào biến toàn cục lifeInches. 0:03:56.403,0:03:58.121 Và sau đó ở phía dưới, 0:03:58.121,0:04:00.459 ta sẽ hiển thị lifeInches: text(lifeInches, 10, 200). 0:04:00.459,0:04:02.998 Tada! tổng trưởng thành trong cuộc đời. 0:04:03.538,0:04:06.431 Giờ nó vẫn chưa thực là chiều cao của tôi. Tôi cao hơn thế. 0:04:06.431,0:04:07.595 Nhưng đó là bởi vì bạn biết, 0:04:07.595,0:04:10.839 ta bắt đầu sinh ra với chiều cao > 0. 0:04:10.839,0:04:13.984 Như vậy, nếu muốn tổng số, có lẽ tôi có thể bắt đầu từ giá trị 20. 0:04:14.284,0:04:17.265 Và đi thôi, đó là chiều cao của tôi. 0:04:17.265,0:04:20.036 Được rồi Như vậy, hãy cùng xem xét, totalInches 0:04:20.036,0:04:22.157 được gọi là một biến cục bộ. 0:04:22.157,0:04:24.454 Và ta biết vậy bởi ta thấy khai báo của nó 0:04:24.454,0:04:27.491 bên trong hàm này và không có bên ngoài hàm. 0:04:28.521,0:04:30.822 Và điều đó có nghĩa là code bên ngoài này ở đây 0:04:30.822,0:04:34.373 không biết về biến có tên totalInches. 0:04:34.813,0:04:37.656 Giờ lifeInches là thứ mà ta gọi là biến toàn cục. 0:04:37.656,0:04:39.501 Và ta biết rằng bởi ta thấy khai báo của nó 0:04:39.501,0:04:42.726 bên ngoài của bất kỳ hàm trong phạm vi toàn chương trình. 0:04:43.586,0:04:45.070 Như vậy, hãy cố gắng ghi nhớ điều này khi 0:04:45.070,0:04:47.158 bạn đang viết các hàm và các biến. 0:04:47.158,0:04:48.834 Và tự suy nghĩ xem bạn có muốn 0:04:48.834,0:04:51.310 nó là biến cục bộ cho riêng 1 hàm sử dụng, 0:04:51.310,0:04:54.646 hoặc một biến toàn cục cho toàn bộ chương trình sử dụng. 0:04:54.646,0:04:57.354 Và đừng lo lắng nếu điều này khó khăn xoắn não bạn. 0:04:57.354,0:04:59.927 Đây là một trong những khái niệm khó nhất trong lập trình nói chung, 0:04:59.927,0:05:01.730 và trong JavaScript nói riêng. 0:05:01.730,0:00:00.000 Và đó là kỹ năng bạn cải thiện dần khi tiếp tục luyện tập.