01/10/2018, 09:29

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!

KYN viết 11:46 ngày 01/10/2018

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

freetuts – 10 Jan 15

Hàm và tạo hàm (function) trong javascript

Tìm hiểu Hàm và tạo hàm (function) trong javascript, ví dụ demo xây dựng hàm trong javascript và hai cách dùng hàm có giá trị trả về và không trả về


www.vietjack.com

Hàm trong JavaScript

Hàm trong JavaScript - Học Javascript cơ bản và nâng cao cho người mới học từ Cú pháp, Đối tượng, Syntax, Objects, Form Validations, Cookies, Regular Expressions, Literals, Biến, Hàm, Phương thức, Variables, Vòng lặp, Loops, Điều kiện, Conditions.

dnh-cpp

7.0 Làm quen với khái niệm function

if(strlen(str1) == strlen(str2)) { //do something } void introduce() { cout << "Hello!" << endl; cout << "I'm a…


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

Nguyen Duong viết 11:36 ngày 01/10/2018

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 .

Henry viết 11:36 ngày 01/10/2018
//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;
Nguyen Duong viết 11:42 ngày 01/10/2018

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.

Henry viết 11:33 ngày 01/10/2018

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.

Henry viết 11:38 ngày 01/10/2018
//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
viết 11:38 ngày 01/10/2018

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.

Henry viết 11:36 ngày 01/10/2018

à 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.

Nguyen Duong viết 11:33 ngày 01/10/2018

Đú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.

viết 11:35 ngày 01/10/2018

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

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

Nguyen Duong viết 11:39 ngày 01/10/2018

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.@@

Henry viết 11:33 ngày 01/10/2018

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

Nguyen Duong viết 11:44 ngày 01/10/2018

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à.@@

Nguyen Duong viết 11:37 ngày 01/10/2018

function great(name) {
document.write('Hello ’ + name);
alert('Please click here ’ + name);
document.write('Good bye ’ + name);
}

great(‘Gr^k-T’);
great(‘Duong’);

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

Henry viết 11:36 ngày 01/10/2018

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

viết 11:46 ngày 01/10/2018

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

Nguyen Duong viết 11:42 ngày 01/10/2018

Đú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’);

Nguyen Duong viết 11:45 ngày 01/10/2018

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

Henry viết 11:45 ngày 01/10/2018
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
Nguyen Duong viết 11:37 ngày 01/10/2018

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

Ah sao khi khai báo hàm này người ta không khai báo như:
Function nextInLine(arr, item) {
arr = [1,2,3,4,5];
item = ?
return item; // Change this line
}
mà phải khai var testArr = [1,2,3,4,5]; ở dưới vậy.
Như function sum(a,b){
a = 3;
b = 5;
return a+b;} khỏe hơn không

Bài liên quan
0