We will survive after 21/12/2012
Tìm kiếm Tùy Chỉnh

TỰ HỌC Javascript FORUM

Chủ Đề: Array
 

MỞ ĐẦU

CẤU TRÚC RẼ NHÁNH

CẤU TRÚC LẶP

MẢNG

JS FUNCTION - HÀM

FORM

WINDOW

FRAMES

HẸN GIỜ

LINH TINH KHÁC

COOKIES
xxBiến toàn cục và biến cục bộ
Tháng ſáu 19, 2009, 09:56:47 AM gửi bởi nvcnvn
Vấn đề của hai loại biến toàn cục và cục bộ mình đã trình bày ngay từ đầu! Nhưng chỉ giải thích sơ qua là khác nau ở cái tên và không đi sâu thêm, bởi muốn  hiểu vấn đề này, chúng ta cần phải đi qua phần hàm - function để có thể hiểu rỏ nhất.

Nhắc lại chút:
Biến cục bộ( ngay từ từ cục bộ củng cho biết nó chỉ hoạt động ở một bộ phận nhất định)
Biến cục bộ khi khai báo bắt đầu với từ kháo var
Biến toàn cục đương nhiên khác với biến toàn cục ở chỗ nó có giá trị ở toạn bộ phận.
Biến toàn cục khi khai báo không có từ khoá var.

Trong các ví dụ ít khi nào mình dùng tới từ khoá var, bởi vì đơn giản mình muốn các ví dụ đơn giản nhất có thể, dĩ nhiên, các ví dụ đó cũng không hề bị ảnh hưởng bởi việc dùng loại biến nào.

Xét lại ví dụ của loạt bài mảng nói về công dụng : Tính tổng số tiền thu được trong tuần, tính và in ra màn hình số ngày có thu nhập cao hơn trung bình.
Đoạn code của chúng ta đây:
Code: [Select]
<script language="javascript">
//Khai báo mang là phần tử mảng
mang=Array();
//Số ngày yêu cầu, giả sử là 30
songay=5;
//biến tổng lưu giữ giá trị tong so tien thu đuoc
tong=0;
//biến tb lưu giữ giá trị trung bình
tb=0;
//biến num lưu gữ số ngày có thu nhập cao hơn
num=0;
//bắt đầu vòng lặp
for(i=0;i<songay;i++)
{
mang[i]=prompt("Thu nhập của ngày "+(i+1),"");
//mỗi lần vòng lặp chạy, biến tổng được tăng lên
tong=eval(tong)+eval(mang[i]);
}
tb=tong/songay;
for(i=0;i<mang.length;i++)
{
if(mang[i]>tb)
{
num=num+1;
}
}
alert("Số ngày trong "+songay+" có thu nhập cao hơn trung bình "+tb+" là "+num);
</script>
Đó là đoạn code củ, bây giờ mình đã biết về hàm, điều đầu tiên mình nghĩ tới là tuỳ biến để đoạn code không chỉ làm việc cho 7 ngày mà có thể là 1 tháng hay 2 tuần tuỳ ý! code lúc này là:
Code: [Select]
<script language="javascript">
function tinhtoan(numngay)
{
//Khai báo mang là phần tử mảng
mang=Array();
//Số ngày yêu cầu, lúc này được gán với giá trị numngay là tham số duy nhất của hàm tintoan
songay=numngay;
//biến tổng lưu giữ giá trị tong so tien thu đuoc
tong=0;
//biến tb lưu giữ giá trị trung bình
tb=0;
//biến num lưu gữ số ngày có thu nhập cao hơn
num=0;
//bắt đầu vòng lặp
for(i=0;i<songay;i++)
{
mang[i]=prompt("Thu nhập của ngày "+(i+1),"");
//mỗi lần vòng lặp chạy, biến tổng được tăng lên
tong=eval(tong)+eval(mang[i]);
}
tb=tong/songay;
for(i=0;i<mang.length;i++)
{
if(mang[i]>tb)
{
num=num+1;
}
}
alert("Số ngày trong "+songay+" có thu nhập cao hơn trung bình "+tb+" là "+num);
}
</script>
bây giờ bạn hãy bắt đầu gọi hàm này ở bất cứ đâu trên trang web. Nhưng hãy thêm một số dòng bên dưới như mình đây:
Code: [Select]
<script language="javascript">
// Ở đây mình gọi hàm để tính toán trong 9 ngày
tinhtoan(9);
// Đưa ra số ngày đã tính toán
alert("Số ngày tính toán: "+num);
// thông báo riêng tổng thu nhập
alert("tổng thu nhập: "+tong);
// và mức thu nhận trung bình
alert("thu nhập trung bình: "+tb);
</script>
Sau khi bạn nhập đầy đủ thông tin, cả thảy sẽ có 4 hộp thông báo, 1 vốn dĩ của hàm, 1 Đưa ra số ngày đã tính toán, 1 thông báo riêng tổng thu nhập, 1 mức thu nhận trung bình.

Nhưng mọi vệc thường hay chuyễn hướng với từ nhưng.....
Ta thay đổi một số dòng ở các đoạn khai báo function, cụ thể là thêm từ kháo var vào trước dòng khai báo hai biến, tongtb
Code: [Select]
//Khai báo mang là phần tử mảng
mang=Array();
//Số ngày yêu cầu, giả sử là 30
songay=numngay;
//biến tổng lưu giữ giá trị tong so tien thu đuoc
var tong=0;
//biến tb lưu giữ giá trị trung bình
var tb=0;
//biến num lưu gữ số ngày có thu nhập cao hơn
num=0;

rồi hãy gọi hàm và thêm một số dòng như trường hợp trên, mọi thứ sẽ không như bình thường nữa. Đầu tên là một hộp thông báo của hàm, thứ hai là hộp thông báo Đưa ra số ngày đã tính toán, còn hai hộp thông báo kia sẽ "vắn bóng"

Đơn giãn vì khi khai báo từ kháo var trước hai biến tong và tb, lúc này chúng trở thành hai biến cục bộ, và như đã nó, biến cục bộ chỉ có gái trị trong một bộ phận(cụ thể trường hợp này chính là hàm tintoan), khi ta gọi hai biến này ngoài cấu trúc hàm, javascript sẽ cho rằng những hàm này chưa tồn tại, chưa được khai báo( vốn dĩ ta đã khai báo trong hàm) và lỗi sẽ sảy ra khiến hai hợp thoại không thể xuất hiện.

Lại nhấn mạnh một lần nữa, tuỳ theo mục đích của trương trình, chính lập trình viên sẽ quyết định xem dùng những gì cho thích hợp nhất với chương trình. Và đó là một yếu tố không thể thiếu, yếu tố con người!



http://hocvui.net

Write Comment

Replies:

Trang: [1]

xx Re: Biến toàn cục và biến cục bộ
Trả lời 1: Tháng Mười Hai 24, 2012, 04:08:48 PM gửi bởi longlaodai90
 :D thày viếc xai chín tã dìu quá thàu ui!
Trang: [1]  
Bản quyền thuộc http://hocvui.net có copy đi đâu thì cũng để lại bản quyền ha!

 
 


Thích hợp với các trình dyệt:

Firefox - Opera- Google Chrome
iWin - iWin Online - iWin - iWin - Game Avatar - Game Avatar - Tai game Avatar - MGO - Long Tinh - Ninja School