Hàm trong Javascript

Chào các member! Mình đang mới bắt đầu học lập trình trên Freecodecamp, đến phần Javascript thì nhận ra không có căn bản chi hết. Các bạn có thể giải thích cho mình 1 hàm cấu trúc như thế nào không mình đọc cách khai báo tham số, hàm và return mà không hiểu, ví dụ như bài này:

Function nextInLine(arr, item) {
  return item;  // Change this line
}
var testArr = [1,2,3,4,5];

Thêm 1 số vào cuối array và xóa phần tử đầu tiên của array, nextlnLine sau đó trả về phần tử bị xóa.
“Write a function nextInLine which takes an array (arr) and a number (item) as arguments. Add the number to the end of the array, then remove the first element of array. The nextInLine function should then return the element that was removed.”
Tới đây thì mình không hiểu 1 hàm nó được khai báo các biến, tham số và trả lại như thế nào bạn nào có thể giải thích minh họa dể hiểu không, xin cảm ơn rất nhiều!

1 Like

bạn thử đọc xem có hiểu ko :



http://vietjack.com/cplusplus/ham_trong_cplusplus.jsp

1 Like

Tk KYN, mình đọc trên google cũng nhiều mà không hiểu, cần giải thích minh họa dể hiểu nhất á. Như bài trên return không biết return cái gì nữa .

//hàm không nhận parameter và không return
function Hello() {
	document.write('Hello World');
}
Hello(); : Hello World

//hàm nhận giá parameter và không return
function Hello(name) {
	document.write('Hello ' + name);
}
Hello('Gr^k-T'); : Hello Gr^k-T

//chính xác hơn 2 cái hàm trên gọi là thủ tục (procedure)

//hàm không nhận parameter và return trường hợp này mình chưa thấy bao giờ :v
function getNumber() {
	return 10;
}
a = getNumber(); : a = 10
document.write(getNumber()); : 10

//hàm nhận parameter và return. Đây chính thức được gọi là hàm
function add(a, b) {
	return a + b;
	//hoặc
	/* c = a + b;
	// return c;
	/*
}
sum = add(1, 2); sum = 3
document.write(add(3, 4)); : 7;
2 Likes

Bạn có thể giải thích bài tập ở trên được không, mình không vỡ ra được nên nếu có ví dụ như trên thì tự tìm tòi dể hiểu hơn. Cảm ơn mẫu về hàm của bạn nhưng mình vẫn không hiểu (dốt), ví dụ không hiểu nếu chỉ in Hello thì sao không khai biến hello luôn mà gọi nguyên 1 hàm cho mệt??? Mình chỉ cần vỡ ra được là hiểu được các bài về sau.

thật ra nó ở quy mô nhỏ nên bạn thấy nó tào lao chả làm được gì thôi. Mấu chốt của hàm sinh ra là để làm đi làm lại một công việc nào đó. Và giúp chương trình đơn giản ngắn gọn hơn.

2 Likes
//ví dụ như thế này
//sử dụng hàm
function great(name) {
	document.write('Hello ' + name);
	alert('Please click here ' + name);
	document.write('Good bye ' + name);
}

great('Gr^k-T');
great('Duong');

//không sử dụng hàm
document.write('Hello Gr^k-T');
alert('Please click here Gr^k-T');
document.write('Good bye Gr^k-T');
document.write('Hello Duong');
alert('Please click here Duong');
document.write('Good bye Duong');

//chỉ đơn giản cái hàm 3 dòng lệnh và gọi 2 lần thôi
//bạn thấy nó tiết kiệm được số dòng và có logic hơn rồi
1 Like

Hàm nextInLine nhận vào 1 mảng (arr) và 1 số (item).
Đoạn sau bạn dịch chuẩn rồi.

Để thêm 1 phần tử dùng push: arr.push(item)
Để xóa 1 phần tử dùng shift: x = arr.shift(); x lúc này nhận đúng phần tử bị xóa.

nextlnLine sau đó trả về phần tử bị xóa => return x thôi

function nextInLine(arr, item) {
arr = arr.push(item);
x = arr.shift();
return x;
}

Bài thừa vãi, chả hiểu push vào làm gì.
Lẽ ra chỉ cần viết return arr.shift() là xong cái thân hàm.

2 Likes

à còn một lưu ý nữa đó chính là return sẽ kết thúc hàm dù sau nó có là gì đi nữa.

1 Like

Đúng như bạn nói viết như bạn chỉ là qua bài @@ nhưng cái var testArr = [1,2,3,4,5] nó có tác dụng gì, nó truyền đến đâu? đó là lý do mình không hiểu nên không làm bài được.

testVar chính là cái arr đấy.

testVar = [1,2,3];
alert(nextInLine(testVar,4));

2 Likes

Nếu tạo nhiều hơn 2 great như ở trên thì nó cứ in ra hoài cho đến khi hết great hả bạn, nếu giờ thêm return 1 great thôi như cái great Duong thì nó sẽ chạy thế nào.@@

trong thân hàm push để thay đổi giá trị của mảng mà

1 Like

alert(nextInLine(testVar,4)); số 4 ở đâu ra ta, cái item mình chưa truyền cho nó số mấy mà push luôn mà.@@

mình tưởng phải name(‘Gr^k-T’)
name(‘Duong’) chứ… ặc ặc @@@

mình vẫn chưa hiểu lắm. Bạn nói rõ được không?

Hàm nextInLine nhận vào 1 mảng (arr) và 1 số (item).

Số 4 là cái item ấy, k truyền vào thì lấy cái gì mà push.

function sum(a,b){return a+b}

Đấy là khai báo, a, b có thể là bất cứ cái gì, khi gọi function thì gọi
sum(1,2); hoặc sum(2017,2018) tùy, thế nên đừng hỏi 1,2 ở đâu.

Bạn nên đọc lại và đọc nhiều ví dụ hơn về function, k chỉ riêng javascript mà là kiến thức chung về lập trình

1 Like

Đúng là mình không hiểu bản chất của 1 hàm. Ví dụ như trên bạn có hàm great(name)
khi vào trang nó sẽ hiện Hello+name.
hiện popup nhập vào.
hiện thông báo kết thúc.
Vậy tại sao không phải là
name(‘Gr^k-T’)
name(‘Duong’)
hay là
name =“Gr^k-T”
name =“Duong”
mà phải là
great(‘Gr^k-T’);
great(‘Duong’);
Nếu như hơn 2 great thì sao nó sẽ chạy thế nào ví dụ:
great(‘Gr^k-T’);
great(‘Duong’);
great(‘abc’);
great(‘xyz’);

Cảm ơn bạn hiền nhen

function great(name) {
	document.write(name);
}

//khi gọi hàm
great('Duong');
//so sánh với phần khai báo nào
//great(name) với great('Duong')
// => name = 'Duong'
//tương tự so với 
great(something);
//great(name) với great(something)
//=> name = something
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?