Định nghĩa Hàm SUM trong SQL. Hàm SUM trong SQL được sử dụng để tính tổng của một trường trong các bản ghi đa dạng.. Cú pháp hàm SUM() trong SQL SELECT SUM(tên_cột) FROM tên_bảng. Ví dụ hàm SUM. Theo dõi bảng MUONSACH có các bản ghi sau:
Các khóa học qua video: Lập trình C Java C# SQL Server PHP HTML5-CSS3-JavaScript Bạn có thể tự tạo một số đối tượng của riêng bạn trong cơ sở dữ liệu và một trong số này chắc chắn là bạn tự tạo được hàm. Khi được sử dụng thì hàm là một công cụ rất mạnh góp phần quản trị cơ sở dữ liệu.
=SUM (LEFT) cộng các số trong hàng vào phía bên trái của ô bạn đang chọn. =SUM (BELOW) cộng các số trong cột ở phía dưới ô bạn đang chọn. =SUM (RIGHT) cộng các số trong hàng vào phía bên phải của ô bạn đang chọn. Mẹo: Nếu bạn thay đổi bất kỳ số nào mà bạn đang cộng, hãy chọn tổng và nhấn F9 để cập nhật tổng.
Hàm FV() Tính giá trị tương lai (Future Value) của một khoản đầu tư có lãi suất cố định và được chi trả cố định theo kỳ với các khoản bằng nhau mỗi kỳ. Cú pháp : = FV ( rate , nper , pmt [, pv] [, type]) Rate : Lãi suất của mỗi kỳ (tính theo năm). Nếu trả lãi hằng tháng
1. Giới thiệu. Trong phiên bản ES6 2015 đã thêm các template literals (kí tự chuỗi) vào JavaScript. Template literals là một hình thức tạo chuỗi mới trong JavaScript, bổ sung nhiều tính năng mới mạnh mẽ, chẳng hạn như tạo chuỗi nhiều dòng dễ dàng hơn và sử dụng placeholders để
Một cách đơn giản hơn, không cần quan tâm tới công thức trên, Excel cung cấp cho chúng ta một hàm FV, để tính giá trị của một khoản tiền theo thời gian như dưới đây. Copy All Code. FV (rate,nper,pmt, [pv], [type]) FV: giá trị của tiền trong tương lai rate: lãi suất nper: số kỳ pmt
Số tiền sau giảm giá = Giá gốc x ( (100 - phần trăm giảm giá)/100) Như vậy để tính được thì ta cần phải biết giá gốc của hàng hóa và phần trăm giảm giá. Công thức trên được giải thích như sau: nếu bạn bán 1 món hàng và món hàng này được giảm giá a% thì số tiền
8ly4l5c. Bài viết đăng tại dẫn cách dùng return trong JavaScript. Bạn sẽ học được khái niệm Return là gì trong JavaScript, cách dùng return để trả về giá trị trong hàm JavaScript, cách return nhiều giá trị trong javascript, cách sử dụng return true false trong Javascript, cũng như cách ứng dụng return để dừng chương trình trong Javascript sau bài học là gì trong JavaScriptReturn trong JavaScript là câu lệnh dùng để trả về giá trị từ hàm. Return có tác dụng kết thúc hàm và trả lại điều khiển cũng như kết quả xử lý hàm cho người gọi. Chúng ta có thể sử dụng hoặc lược bỏ return khi khai báo hàm trong JavaScript, và một hàm có chứa return trong JavaScript được gọi là hàm trả về giá trị trong dùng return trong hàm trả về giá trị trong JavaScriptKhi sử dụng return trong hàm trả về giá trị trong JavaScript, chúng ta viết giá trị trả về của hàm đằng sau lệnh return như saufunction tên hàm tham số 1, tham số 2, … { Câu lệnh 1 trong hàm; Câu lệnh 2 trong hàm; … return giá trị trả về;}Một giá trị sẽ được trả về sau khi gọi hàm trong JavaScript. Chúng ta có thể lưu giá trị này vào một biến bằng cách sử dụng toán tử = để sử dụng sau biến = tên hàm tham số 1, tham số 2, …Ví dụ cụ thểfunction addx, y{ let sum = x + y; return sum;}let z = add1, 2; hàm trên, chúng ta tiến hành tính tổng của các giá trị truyền vào hàm, gán tổng vào một biến và sau đó trả về giá trị của biến nữa, chúng ta có thể viết trực tiếp biểu thức đằng sau lệnh return như saufunction addx, y{ return x + y;}Cách dùng return trong hàm không trả về giá trị trong JavaScriptKhi sử dụng return trong hàm không trả về giá trị trong JavaScript, chúng ta chỉ viết lệnh return vào cuối hàm như saufunction tên hàm tham số 1, tham số 2, … { Câu lệnh 1 trong hàm; Câu lệnh 2 trong hàm; … return;}Ví dụ cụ thểfunction myfunc{ return;}myfunc;Lại nữa, khi chúng ta khai báo một hàm không trả về giá trị trong JavaScript, chúng ta cũng có thể lược bỏ đi lệnh return. Ví dụ ở trên có thể viết lại như saufunction myfunc{ ý, mặc dù các hàm không trả về giá trị trong JavaScript không trả về một giá trị nào tương ứng với các giá trị truyền vào hàm, tuy nhiên điều đó không có nghĩa là các hàm này không trả về bất cứ thứ gì cả. Thực chất, một giá trị mặc định undefined sẽ được trả về khi chúng ta không chỉ định một giá trị cụ thể trả về từ hàm. Ví dụfunction myfunc{ x = myfunc; nhiều giá trị trong javascriptVề cơ bản, chúng ta chỉ có thể ghi một giá trị trả về đằng sau lệnh return. Tuy nhiên chúng ta cũng có thể dễ dàng return nhiều giá trị trong javascript bằng cách chỉ định giá trị trả về này là một đối tượng chứa nhiều phần tử như mảng để chứa tất cả các giá trị cần trả về từ hàm trong nhiều giá trị trong javascript dưới dạng mảng và gán kết quả vào một biếnChúng ta có thể trả về nhiều giá trị trong hàm JavaScript bằng cách lưu giữ các giá trị này vào một mảng và chỉ định mảng đó là giá trị trả về sau lệnh return. Ví dụfunction myfunc{ name = "Kiyoshi"; old = 30; return [name, old];}Một mảng sẽ được trả về sau khi gọi hàm, và chúng ta có thể gán mảng kết quả vào một biến, và truy cập vào phần tử trong mảng thông qua biến để lấy ra các giá trị trả về như saux = myfunc; nhiều giá trị trong JavaScript dưới dạng mảng và gán kết quả vào một mảng khácNgoài cách gán kết quả return nhiều giá trị trong JavaScrit vào một biến như ở trên, chúng ta cũng có thể gán kết quả trực tiếp vào một mảng khác, với các phần tử trong mảng đó sẽ nhận tương ứng các giá trị trả về trong mảng kết dụ, chúng ta có hàm tìm max min trong JavaScript sau đây. Hàm này sẽ nhận các số vào và trả về 2 số lớn nhất và nhỏ nhất trong các số đã cho như saufunction find_max_mina, b, c { const maxNum = b, c; const minNum = b, c; return [maxNum, minNum]; }Để nhận kết quả trả về từ hàm, chúng ta có thể chuẩn bị một mảng chứa hai phần tử max , min, và nhận các kết quả tương ứng trả về từ hàm, sau đó gọi tên các phần tử đó ra để lấy kết quả của hàm như saulet [max, min] = find_max_min2, 5, 3; làm này sẽ rất tiện lợi khi chúng ta muốn đặt tên các biến bên ngoài hàm và nhận các giá trị tương ứng trả về từ hàm trong JavaScriptReturn true false trong JavascriptReturn trong JavaScript là câu lệnh dùng để trả về giá trị từ hàm. Giá trị trả về từ hàm này ngoài là các giá trị cụ thể như số, chữ trong các ví dụ mà Kiyoshi đã hướng dẫn ở trên thì cũng có thể là các giá trị thuộc kiểu Boolean với giá trị true hoặc ta có thể trả về các giá trị true hoặc false này bằng lệnh return bằng cách chỉ định trực tiếp, hoặc là thông qua một biểu thức trả về kết quả boolean giống như dưới đâyReturn true false trong Javascript bằng cách chỉ định trực tiếp giá trịNói đơn giản thì chúng ta chỉ định trực tiếp một giá trị trả về từ hàm là true hoặc false như saufuntion sayhi{ return false};let a = sayhi; ví dụ này, hàm sayhi khi được chạy sẽ thực hiện một hành động in dòng chữ Hello, sau đó trả về giá trị false bằng lệnh ta thường sử dụng cách return trực tiếp giá trị ở trên khi xử lý các event trong JavaScript, trong đó return false có tác dụng dừng hoàn toàn một event sau khi đã gọi xong event đó. Và return true thì lại ngược lại, cho phép event đó có thể tiếp tục thực thi sau khi nó được dụ cụ thể, chúng ta gọi hàm sayhi ở trên khi người dùng click vào một link, hay một button như sauTrong ví dụ này, chúng ta có một event click chuột vào đường link chỉ định trong thẻ href, và kết quả return của hàm sayhi sẽ quyết định chúng ta có thể mở đường link này sau khi click chuột hay hàm sayhi return giá trị false, nên kết quả là kể cả sau khi click vào link thì chúng ta cũng sẽ không thể mở được nó. Ngược lại nếu sửa giá trị trả về của hàm sayhi thành return true thì sau khi click, đường link mới có thể mở true false trong Javascript thông qua biểu thứcMột cách khác nữa để return true false trong JavaScript đó chính là sử dụng một biểu thức mà kết quả của biểu thức này thuộc dạng boolean trả về true hoặc false. Một ví dụ điển hình đó là sử dụng biểu thức điều kiện để return true false trong JavaScript như saufunction check_10 x { return x > 10;};let check = check_1020if check == true{ đã cho lớn hơn 10";}Ở ví dụ này, kết quả của hàm check_10 sẽ quyết định việc dòng chữ Số đã cho lớn hơn 10 có được in ra màn hình hay ta thường sử dụng cách return true false thông qua biểu thức ở trên trong các hàm có mục đích đánh giá giá trị trong JavaScript. Các giá trị sẽ được đánh giá trong hàm trước khi quyết định sẽ trả về giá trị true hay false từ hàm đó, và sử dụng giá trị này như là đầu vào cho một xử lý dụ, chúng ta viết lại hàm ở trên thành một hàm kiểm tra một chuỗi có phải là địa chỉ ip hay không như saufunction check_ip str { const regexExp = /^[0-9][1-9][0-9]1[0-9]{2}2[0-4][0-9]25[0-5]\.{3}[0-9][1-9][0-9]1[0-9]{2}2[0-4][0-9]25[0-5]$/gi; return str = " strlet str2 = " str2Ở ví dụ này, chúng ta sử dụng hàm check_ip để đánh giá một chuỗi có phải được viết theo đúng cú pháp của một địa chỉ ip hay không, và return các kết quả true hoặc false về từ chương trình trong Javascript bằng returnReturn có tác dụng kết thúc hàm và trả lại điều khiển cũng như kết quả xử lý hàm cho người gọi, do đó chúng ta có thể sử dụng return để dừng chương trình trong ví dụ sau, chúng ta sẽ dừng chương trình trong Javascript bằng cách đặt lệnh return vào vị trí cần dừng chương trìnhfunction check_oldold{ if old 30{ 30 rồi'; }else{ còn 20'; }}check_old17;check_old20;Trong ví dụ này, nếu tuổi nhập vào dưới 18, dòng Em chưa 18 sẽ được in ra màn hình, sau đó lệnh return được thực hiện và chương trình cũng kết thúc tại đây. Do đó các lệnh xử lý điều kiện còn lại trong chương trình cũng sẽ không thực kếtTrên đây Kiyoshi đã hướng dẫn bạn về cách dùng return để trả về giá trị trong hàm JavaScript, cũng như xử lý trong hàm trả về nhiều giá trị trong JavaScript rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay hãy cùng tìm hiểu những kiến thức sâu hơn về JavaScript trong các bài học tiếp Link chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!HOME › học javascript - lập trình javascript cơ bản>>08. hàm trong javascriptBài sauMutable, Immutable Objects và sự biến đổi của giá trị trong hàm JavaScriptBài tiếpFunction object trong JavaScript
Các hàm Function là một trong những nền tảng cơ bản trong Javascript. Vậy bạn đã nắm hết những kiến thức về Function trong Javascript chưa? FunctionHàm là gì? Function hàm, chức năng, gọi chung là subprogram chương trình con có thể được gọi ở bên ngoài hoặc bên trong chính nó. Nó bao gồm tập hợp các câu lệnh gọi là function body. Các giá trị có thể truyền đến một hàm, và một hàm có thể trả về giá trị. Bây giờ, với các ứng dụng hiện đại, các function có thể là một chương trình hoàn chỉnh, chứ không phải là khái niệm tổng quát như ''subprogram" nữa. Có sự khác nhau giữa function và procedure thủ tục rằng sự lý tưởng của function nên trả về một giá trị còn procedure thì không bây giờ điều này có thể thay đổi theo ngôn ngữ lập trình. 1. Khai báo hàm Để khai báo hàm, chúng ta dùng từ khóa function, theo sau nó là Tên hàm Danh sách các tham số truyền vào hàm, được đặt trong ngoặc đơn và cách nhau bởi dấu phẩy. Các câu lệnh của JavaScript để tạo ra một hàm, được đặt trong ngoặc nhọn {...}. Ví dụ, để định nghĩa một hàm in ra chữ "Hello World" ở console function sayHello { World"; } 2. Biểu thức hàm Hàm trong biến Trong khi việc khai báo hàm ở trên là một câu lệnh về mặt cú pháp, các hàm cũng có thể tạo ra bằng một biểu thức hàm function expression. Một hàm như vậy có thể nặc danh; nó không cần phải có tên. Ví dụ, hàm sayHello ở trên có thể được khai báo như sau const sayHello = function { World"; } Tuy nhiên, một cái tên có thể được cung cấp trong một biểu thức hàm. Việc cung cấp tên cho phép hàm có thể chạy chính nó, hoặc có thể sử dụng hệ thống debug để nhận dạng hàm trong stack traces. const hello = function sayHello { World"; } 3. Các ràng buộc về tên hàm Javascript cũng giống như các ngôn ngữ khác nó cũng có các ràng buộc về tên hàm sau đây Tên hàm phải được bắt đầu bằng chữ cái a-z,A-Z hoặc ký tự _. Tên hàm không được bắt đầu bằng số, các ký tự khác ký tự _. Các loại hàm 1. Hàm cơ bản Đây là dạng hàm cơ bản nhất trong Javascript, cú pháp có dạng như sau function doSomeThing { // Do Something } Trong đó doSomeThing là tên của hàm bạn muốn đặt và function là từ khóa bắt buộc. Ví dụ Tạo hàm in ra tên website codelearn ở console function getWebsite { } 2. Hàm có tham số truyền vào Đây là một dạng hàm rất hay được sử dụng, cú pháp có dạng như sau function funNameparam_1, ..., pram_n { //code } Trong đó funName là tên của hàm các bạn muốn đặt. param_1,...,pram_n là các tham số mà các bạn muốn truyền vào hàmkhông giới hạn số lượng. VD Tạo hàm tính tổng 2 số function getSuma, b { " + a + b; } 3. Hàm có tham số mặc định Đây thực ra là dạng hàm có truyền tham số và đồng thời xét luôn giá trị mặc định cho các tham số đó. Cú pháp function funNameparam_1 = value_1, ..., pram_n = value_2 { //code } Trong đó funName là tên của hàm các bạn muốn đặt. param_1,...,pram_n là các tham số mà các bạn muốn truyền vào hàmkhông giới hạn số lượng. value_1,...,value_n là các giá trị tương ứng với các pram. VD với hàm getSum ở trên mình sẽ xét tham số mặc định cho nó. function getSuma = 5, b = 10 { " + a + b; } 4. Hàm có và không trả về giá trị Trong javascript có hai loại hàm,đó là hàm có giá trị trả về và hàm không có giá trị trả về. Đối với hàm có giá trị trả về thì phải sử dụng từ khóa return Và ngược lại đối với hàm không có giá trị trả về thì không có từ khóa return VD khai báo hàm getSum ở trên là hàm có giá trị trả về. function getSuma, b { return a + b; } Gọi hàm Việc định nghĩa một hàm sẽ không thực thi nó. Định nghĩa một hàm đơn giản chỉ là đặt tên cho hàm và chỉ định những việc cụ thể sẽ làm khi hàm đó được gọi. Ví dụ, nếu bạn định nghĩa hàm sayHello, bạn có thể gọi nó như sau function sayHello { World"; } sayHello; // Gọi hàm Câu lệnh trên gọi hàm sayHello, kết quả trả về chữ "Hello World" tại console. Các hàm phải đặt trong phạm vi in scope khi nó được gọi, nhưng việc khai báo hàm có thể được hoisted câu lệnh khai báo hàm xuất hiện bên dưới dòng gọi hàm trong đoạn code, như ví dụ này /* ... */ function getAreaOfSquaren { return n*n; } Phạm vi scope của một hàm là khoảng không gian bên trong hàm mà nó được khai báo hoặc là cả chương trình, nếu nó được khai bảo ở top level, tức là nó không nằm trong hàm nào khác. Lưu ý Điều này chỉ đúng khi định nghĩa một hàm bằng cách sử dụng các cú pháp ở trên ví dụ function funcName{}. Điều này có nghĩa rằng function hoisting chỉ hoạt động với cách khai báo hàm thông thường function declarations - function hoisting không hoạt động đối với hàm được khai báo bằng biểu thức hàm function expression. Ví dụ, đoạn code dưới đây sẽ không hoạt động // ReferenceError getAreaOfSquare is not defined // ReferenceError getAreaOfSquare is not defined getAreaOfSquare = function n { return n * n; } Một hàm có thể gọi chính nó Ví dụ, đây là một hàm tính giai thừa đệ quy function factorialn{ if n == 0 n == 1 return 1; else return n * factorialn - 1; } Bạn có thể tính giai thừa của 1 tới 3 như sau var a, b, c; a = factorial1; // a gets the value 1 b = factorial2; // b gets the value 2 c = factorial3; // c gets the value 6 Có những cách khác để gọi hàm. Có nhiều trường hợp mà tại đó một hàm cần phải được gọi một cách tự động, hoặc làm thay đổi số lượng đối số truyền vào một hàm, hoặc trong trường hợp mà việc gọi hàm cần được gắn với một object nhất định được quyết định tại thời điểm runtime. Điều đó lại hóa ra là các hàm tự bản thân chúng là các object, và kết quả là, những object này có các phương thức. Một trong số chúng, phương thức apply, có thể được dùng để đạt được mục tiêu này. Phạm vi của hàm Function Scope Các biến được định nghĩa bên trong một hàm không thể được truy cập từ nơi nào khác bên ngoài hàm, bởi vì biến đó được định nghĩa chỉ trong phạm vi của hàm. Tuy nhiên, một hàm có thể truy cập đến mọi biến và mọi hàm khác trong cùng phạm vi mà nó được định nghĩa. Nói cách khác, một hàm được định nghĩa trong phạm vi global có thể truy cập tới tất cả các biến đã được định nghĩa trong phạm vi global. Một hàm được định nghĩa bên trong một hàm khác có thể truy cập đến tất cả biến được định nghĩa bên trong hàm cha của nó, và bất cứ biến nào khác mà hàm cha của nó có quyền truy cập đến. Các bạn có thể tham khảo ví dụ dưới đây // Các biến sau được định nghĩa trong phạm vi global scope var num1 = 20, num2 = 3, name = "Khoa"; // Hàm này được định nghĩa trong phạm vi global scope function multiply { return num1 * num2; } multiply; // Returns 60 // Một ví dụ hàm lồng nhau function getScore { var num1 = 50, num2 = 50; function add { return name + " scored " + num1 + num2; } return add; } getScore; // Returns "Khoa scored 100" Các tham số của Function Kể từ ES6, xuất hiện 2 dạng tham số mới default parameters và rest parameters 1. Default parameters Trong JavaScript, các tham số của function được mặc định là undefined. Tuy nhiên, trong một số trường hợp nó có thể hữu ích để thiết lập một giá trị mặc định khác. Đây chính xác là điều mà default parameters sẽ làm. Khi không có default parameters trước ES6 Trong quá khứ, cách thông thường để thiết lập các giá trị mặc định là kiểm định giá trị của các tham số bên trong body của function và gán giá trị cho nó nếu nó là undefined. Trong ví dụ sau, nếu không có giá trị nào được truyền cho b, giá trị của nó sẽ là undefined khi thực hiện tính toán a*b, và việc gọi hàm multiply sẽ trả về NaN. Tuy nhiên, điều này bị ngăn chặn bởi dòng thứ 2 trong ví dụ này function multiplya, b { b = typeof b !== 'undefined' ? b 1; return a*b; } multiply5; // 5 Khi có default parameters sau ES6 Với default parameters, việc kiểm tra thủ công bên trong body của function không còn cần thiết. Bạn có thể đơn giản chỉ là đặt 1 vào làm giá trị mặc định cho b ngay tại head của function function multiplya, b = 1 { return a*b; } multiply5; // 5 2. Rest parameters Cú pháp rest parameter cho phép chúng ta dùng 1 mảng để đại diện cho số lượng vô hạn các đối số. Trong ví dụ sau, hàm multiply sử dụng rest parameters để thu thập các đối số kể từ đối số hứ hai trở về đến hết. Hàm này sau đó sẽ nhân những đối số này với đối số đầu tiên. function multiplymultiplier, ...theArgs { return => multiplier * x; } var arr = multiply2, 1, 2, 3; // [2, 4, 6] Arrow Function Trong ES6, arrow function là một cú pháp mới dùng để viết các hàm trong JavaScript. Nó giúp tiết kiệm thời gian phát triển và đơn giản hóa phạm vi function function scope. Arrow function - còn được gọi là "fat arrow", là cú pháp được mượn từ CoffeeScript một ngôn ngữ chuyển tiếp, cú pháp này là cách ngắn gọn hơn dùng để viết function. Ở đây sử dụng kí tự =>, trông giống như một mũi tên "béo". Arrow function là một hàm vô danh và nó thay đổi cách this bind đến function. Arrow function làm code của ta trông ngắn gọn hơn, giúp đơn giản hóa function scoping cũng như từ khóa this. Dưới đây là 1 vài ví dụ về việc sử dụng Arrow fucntion trong Javascript 1. Trường hợp có nhiều tham số // param1, param2, paramN => expression // ES5 var multiply = functionx, y { return x * y; }; // ES6 var multiply = x, y => { return x * y }; Ví dụ trên cho cùng một kết quả, tuy nhiên cú pháp với arrow function tốn ít dòng mã hơn. Trong trường hợp chỉ có một biểu thức thì không cần tới dấu ngoặc nhọn Ví dụ trên có thể viết lại như sau var multiply = x, y => x * y ; 2. Trường hợp có 1 tham số Dấu ngoặc đơn là không bắt buộc khi chỉ có 1 tham số. //ES5 var phraseSplitterEs5 = function phraseSplitterphrase { return '; }; //ES6 var phraseSplitterEs6 = phrase => "; Codelearn"; // ["Love", "Codelearn"] 3. Trường hợp không có tham số Dấu ngoặc đơn là bắt buộc khi không có tham số. // ES5 var hello = function sayHello { World"; } // ES6 var hello = => { World"; } hello; // Hello World Closures Closures là một trong những chức năng quyền lực nhất của JavaScript. JavaScript cho phép lồng các function vào nhau, và cấp quyền cho function con, để function con có toàn quyền truy cập vào tất cả các biến và function được định nghĩa bên trong function cha và tất cả biến và function mà function cha được cấp quyền truy cập đến. Tuy nhiên, function cha không có quyền truy cập đến các biến và function được định nghĩa bên trong function con. Điều này tạo nên một dạng bảo mật khép kín cho các biến của function con. Bên cạnh đó, vì function con có quyền truy cập đến scope của function cha, các biến và function được định nghĩa bên trong function cha sẽ vẫn tồn tại dù việc thực thi function cha đã kết thúc, nếu function con xoay sở để tồn tại lâu hơn thời gian sống của function cha. Một closure được tạo ra khi một function con bằng cách nào đó trở nên khả dụng với bất kỳ scope nào bên ngoài function cha. Hãy xem các ví dụ sau đây để hiểu hơn về Closures VD1 function numberGenerator { // Local “free” variable that ends up within the closure var num = 1; function checkNumber { } num++; return checkNumber; } var number = numberGenerator; number; // 2 Trong ví dụ trên, hàm numberGenerator tạo ra một biến local num và checkNumber một hàm in ra num trong console. Hàm checkNumber không có bất kỳ biến local nào trong nó. Tuy nhiên, nó có quyền truy cập vào các biến bên ngoài function, bởi vì numberGenerator là một closure. Do đó, nó có thể sử dụng biến num được khai báo trong numberGenerator để log num trong console sau khi numberGenerator được trả lại. VD2 function sayHello { var say = function { } // Local variable that ends up within the closure var hello = 'Hello, world!'; return say; } var sayHelloClosure = sayHello; sayHelloClosure; // Hello, world!’ Chú ý, biến hello được khai báo sau anonymous function nhưng vẫn có thể truy cập biến hello. Điều này là do biến hello đã được khai báo trong function scope tại thời điểm được tạo ra, làm cho nó có sẵn khi anonymous function được thực thi. Callback Function Callback function có thể được hiểu nôm na như sau callback tức là ta truyền một đoạn code Hàm A này vào một đoạn code khác Hàm B. Tới một thời điểm nào đó, Hàm A sẽ được hàm B gọi lại callback. Javascript là một ngôn ngữ lập trình hướng sự kiện và bất đồng bộ nên callback function đóng vai trò rất quan trọng, bạn sẽ truyền một callback function vào các sự kiện và xử lý bất đồng bộ đó.. Về Callback Function thì mình cũng đã có viết 1 bài riêng để chúng ta cùng tìm hiểu về nó. Các bạn có thể đọc thêm ở đây. Tạm kết Như vậy trong bài viết này, chúng ta đã cùng nhau tìm hiểu những vấn đề cơ bản về Function trong Javascript. Bạn thấy thế nào về JS, hãy đưa ra những ý kiến trong quá trình sử dụng js nhé. Nếu các bạn thấy bài viết hữu ích hãy rate 5* và share cho mọi người tham khảo! Hãy để lại comment để mình có thể hoàn thiện bản thân hơn trong tương lai. Cám ơn các bạn!
Có rất nhiều ứng dụng cần hiển thị giá tiền, ví dụ như ứng dụng thương mại điện tử, ứng dụng về thuế phí, Có nhiều lý do, các giá trị này được lưu trong database là giá trị thô kiểu number – vì để phục vụ việc tính toán dễ hơn chẳng hạn. Do đó, để hiển thị giá trị tiền cho người dùng được thân thiện hơn, bạn cần phải định dạng lại. Chưa kể, mỗi một quốc gia lại có quy tắc định dạng tiền tệ khác nhau. Có nơi dùng dấu phẩy để ngăn hàng nghìn, có nơi lại dùng dấy phẩy để ngăn phần thập phân. Ví dụ bạn có 21450 USD hai mươi mốt nghìn bốn trăm năm mươi đô la mỹ, sẽ hiển thị là $21, Tương tự, với tiền euro thì lại ngược lại € Trong bài viết này, mình sẽ chia sẻ cách định dạng các con số theo định dạng tiền tệ tiếng Anh người ta hay gọi là format Number as currency. Let’s go 😊 Phương pháp 1 Sử dụng hàm có sẵn Trong Javascript, cách đơn giản nhất để định dạng giá trị tiền tệ là sử dụng hàm có sẵn Hàm này nó có hỗ trợ cả định dạng theo từng quốc gia. Cú pháp options. formatprice Trong đó locales mã quốc gia tương ứng khi hiển thị định dạng tiền. Bạn có thể tham khảo danh sách mã quốc gia này tại đây. options Có nhiều tùy chỉnh trong options này lắm, nhưng trong đó bạn chỉ cần quan tâm tới 2 tùy chỉnh chính style và currency Mình sẽ giải thích chi tiết về hai option trên nhé. style Bạn sử dụng tùy chỉnh này để xác định kiểu định dạng. Bạn có thể truyền vào một trong ba giá trị sau số thập phân bình thường decimals, tiền tệ currency, hay đơn vị đo lường units. Trong bài viết này, chúng ta là currency. currency tùy chọn này để chỉ định đơn vị tiền tệ, ví dụ USD, VND, CAD… Tùy chọn này nó cũng hỗ trợ hiển thị ký hiệu tiền tệ tương ứng với locale. Ví dụ bằng code const price = 21450; const USDollar = new { style 'currency', currency 'USD', }; const VND = new { style 'currency', currency 'VND', }; ' + // Dollars $21, Nam đồng ' + // Việt Nam đồng ₫ Phương pháp 2 Sử dụng thư viện Trong trường hợp bạn muốn tùy biến nhiều hơn nữa, bạn có thể xem xét sử dụng thư viện bên thứ 3. Cá nhân hay sử dụng thư viện Với thư viện này, bạn có thể sử dụng trên cả frontend hoặc backend đều được. Cách cài đặt thư viện Với NodeJS npm install -save Với HTML, bạn thêm vào thẻ script như bình thường Cách sử dụng const price = 21450; {symbol "đ"}.format // đ21, {symbol "$"}.format // $21, Thư viện này khá là mạnh, bạn có thể tùy biến rất nhiều. Trong đó, bạn có thể thay đổi ký tự phân tách hàng nghìn và ký tự phân tách chữ thập phân. Mặc định, ký tự dấu phẩy “,” dùng để phân tách hàng nghìn. Bạn hoàn toàn có thể đổi lại. const price = 21450; { symbol 'đ', separator '.', decimal ',' } .format; // Còn rất nhiều tính năng và tùy chọn khác nữa, bạn có thể khám phá trong trang tài liệu chính thức của thư viện này nhé. Phương pháp 3 Tự code Ngoài 2 trường phái sử dụng thư viện hoặc hàm có sẵn, bạn thích tự mình làm tất cả. Với ưu điểm là code tự viết nên mình sẽ hiểu rõ và tối ưu chính xác với nhu cầu thực tế của dự án. Nhưng nhược điểm là khả năng sẽ bug nhiều đấy 😊 Dưới đây là một gợi ý dành cho bạn. /** * Định dạnh số theo tiền tệ * param price - giá trị tiền * param symbol - ký tự đại diện cho đơn vị tiền */ function formatCurrencyprice, symbol = "$" { var DecimalSeparator = Number' 1; var priceWithCommas = var arParts = StringpriceWithCommas.splitDecimalSeparator; var intPart = arParts[0]; var decPart = > 1 ? arParts[1] ''; decPart = decPart + '00'.substr0, 2; return symbol + intPart + DecimalSeparator + decPart; } const price = 21450; Tạm kết Trong bài viết này, mình đã giới thiệu một số phương pháp để định dạng một số thành chuỗi tiền tệ, giúp người dùng dễ đọc hơn. Ngoài những cách trên, bạn còn giải pháp nào hay hơn không? Đừng ngại để lại chia sẻ bên dưới bình luận nhé. 💦 Đọc thêm về Javascript Xóa thuộc tính khỏi Object trong Javascript 2 cách Deep Clone Objects trong Javascript – Giới thiệu một biện pháp cực mạnh [Javascript] Các cách xóa phần tử trong mảng Array
Trong bài này chúng ta sẽ tìm hiểu function trong Javascript. Function hay còn gọi là hàm, được sử dụng rất nhiều khi làm việc với viết này được đăng tại không được copy dưới mọi hình thức. Kể từ phiên bản ES6 trở đi thì hàm trong Javascript có rất nhiều cách tạo khác nhau, điển hình nhất là các khái niệm về arrow function, callback function, khiến những người mới học cảm thấy đau đầu. Nhưng bạn đừng quá lo lắng bởi trong bài này mình sẽ nói tất cả những kiến thức cần biết về function / hàm trong JS nhé. 1. Function trong Javascript là gì? Function hay còn gọi là hàm, là tập hợp một đoạn code dùng để xử lý một nhiệm vụ nào đó. Code bên trong function không được biên dịch cho tới khi được gọi đến. Chính vì vậy khi sử dụng function sẽ giúp chương trình được linh hoạt hơn. Ví dụ Bạn đang xây dựng chức năng hiển thị danh sách sản phẩm cho trang chủ, trang chuyên mục, ... và nhiều trang khác. Lúc này nếu trang nào bạn cũng code từ A - Z thì sẽ mất khá nhiều thời gian, thay vào đó hãy viết nó vào một function và gọi đến nó ở những trang cần sử viết này được đăng tại [free tuts .net] 2. Một ví dụ về lợi ích của function trong Javascript Từ bài 1 tới giờ ta đang code từng đoạn code riêng lẻ và khi cần thì code lại, như vậy giả sử ta cần xử lý vấn đề đó trong 1000 trường hợp thì ta phải code lại 1000 lần nên rất tốn thời gian, chính vì vậy người ta nghĩ ngay đến hàm, hàm sẽ gom một số đoạn code vào một khối xử lý và khi cần thì gọi ra dùng. Giả sử mình viết chương trình kiểm tra số chẵn hay lẻ như sau var number = 2; if number % 2 == 0{ alert'Số chẵn'; } else { alert'Số lẻ'; } Nếu mình cần kiểm tra cho 100 số thì sẽ viết lặp lại đoạn code trên 100 lần, điều này quả là tệ hại phải không các bạn? Nhưng đừng lo bởi khi sử dụng hàm trong Javascript thì ta sẽ gom chúng vào thư viện riêng và chỉ gọi tới khi cần. 3. Cách tạo function trong Javascript Trước tiên hãy xem cú pháp tạo hàm trong Javascript như thế nào đã nhé. Cú pháp function name_of_functionvar1, var2, var3, ... { // Some code } Trong đó function là từ khóa của javascript nên bắt buộc phải như vậy name_of_function là tên của hàm, thông thường chúng ta tạo những tên có ý nghĩa như find_max, find_min, ... var1, var2 var3, ... là các tham số truyền vào hàm. Ví dụ viết hàm kiểm tra số chẵn hay lẽ thì ta sẽ có một tham số đó là số cần kiểm tra. Đương nhiên bạn có thể tạo một hàm không có tham số. Ví dụ Viết hàm kiểm tra một số chẵn hay lẻ. // Tạo hàm function check_numbernumber { if number % 2 == 0{ alertnumber + ' là số chẵn'; } else { alertnumber + 'Số lẻ'; } } 4. Cách gọi hàm trong Javascript Để gọi hàm thì ta chỉ cần gọi đến tên hàm, sau đó truyền vào các tham số cần thiết. Ví dụ dưới đây là mình đã gọi hàm check_number 5 lần và có truyền giá trị cho tham số của hàm. // Sử dụng hàm kiểm tra cho 5 số check_number1; check_number2; check_number3; check_number4; check_number5; Các bạn thấy mình đã tạo một hàm với tham số truyền vào có tên là number. Như vậy khi sử dụng nếu ta truyền số 1 vào thì lúc này biến number trong hàm sẽ có giá trị là 1, tương tự cho 2, 3,4,5. Lưu ý với các bạn trong javascript không tồn tại khái niệm con trỏ và tham chiếu trong hàm 5. Hàm có return và hàm không có return Hàm có return là hàm có sử dụng từ khóa return để đặt ở cuối hàm với mục đích trả kết quả về để sử dụng tiếp ở những đoạn code bên ngoài. Ví dụ ta cần viết một hàm tính tổng của hai số a và b thì hàm này phải trả về giá trị là tổng của hai số a, b. Xem ví dụ sau // Khai báo hàm function tinh_tonga, b { // trả về kết quả là a + b return a + b; } // Sử dụng var so1 = 1; var so2 = 2; // truyền so1 và so2 vào hàm var ketqua = tinh_tongso1, so2; alertketqua; Hàm không có return là hàm không có sử dụng từ khóa return đặt trong hàm. Ví dụ viết chương trình in ra tổng của hai số a và b. // Khai báo hàm function tinh_tonga, b { là ' + a + b; } // Sử dụng var so1 = 1; var so2 = 2; // truyền so1 và so2 vào hàm tinh_tongso1, so2; Như vậy tùy vào mục đích mà ta dùng có return hay không có return. Nhưng thông thường ta sử dụng return ở những trường hợp cần lấy kết quả đó để xử lý tiếp, như ở ví dụ trên đó là mình lấy kết quả để in thông báo. 5. Giá trị mặc định của tham số default parameter Có một số trường hợp bạn muốn một tham số nào đó có thể được truyền hoặc không cần truyền vào đều được, lúc này chúng ta phải sử dụng nó như một tham số mặc định. Javascript không có cú pháp gán giá trị mặc định như PHP mà thay vào đó chúng ta sử dụng toán tử . Ví dụ Hàm hiển thị một thông báo. function showMessagemessage { // Nếu message không được truyền vào hoặc giá trị nó là rỗng // thì sẽ được thay thế bằng giá trị 'Không có tin nhắn' message = message 'Không có tin nhắn '; } // Cách 1 không truyền tham số showMessage; // Cách 2 Truyền tham số showMessage'Chào mừng bạn đến với Toán tử gồm hai vế, trong đó nếu vế TRÁI có giá trị rỗng undefined, null, false, ... kết quả sẽ trả về vế PHẢI, ngược lại nó sẽ trả về vế TRÁI. 6. Cách tạo hàm arrow function trong Javascript Arrow function còn được gọi là hàm mũi tên, tức là ta sẽ tạo hàm bằng cách sử dụng ký tự =>. Cách tạo này xuất hiện kể từ phiên bản ES6. Cú pháp var name_of_function = var1, var2, var3, ... => { // Nội dung function }; So sánh với cú pháp cơ bản mà chúng ta đã học ở đầu bài sẽ là function name_of_functionvar1, var2, var3, ... { // Nội dung function } Ví dụ Viết hàm kiểm tả một số có chia hết cho 3 hay không bằng hai cách trên. Cách 1 Sử dụng hàm thông thường. function chia_het_cho_3number{ if number % 3 == 0{ return true; } return false; } Cách 2 Sử dụng arrow function var chia_het_cho_3 = number => { if number % 3 == 0{ return true; } return false; }; 7. Một số ví dụ tạo hàm trong javascript Ví dụ 1 Viết chương trình kiểm tra một năm có phải là năm nhuận hay không Năm nhuận là năm chia hết cho 4, nếu chia hết cho 100 thì nó phải chia hết cho 400. Đây là định nghĩa năm nhuận còn chính xác hay không thì mình không biết nhé D vì có trường hợp nó sai. // khai báo hàm function kiem_tra_nam_nhuannam { // nếu năm chia hết cho 100 // thì kiểm tra nó có chia hết cho 400 hay không if nam % 100 == 0 { // nêu chia hết cho 400 thì là năm nhuận if nam % 400 == 0{ alertnam + ' là năm nhuận'; } else { // ngược lại không phải năm nhuận alertnam + ' không phải năm nhuận'; } } else if nam % 4 == 0{ // trường hợp chia hết cho 4 thì là năm nhuận alertnam + ' là năm nhuận'; } else { // cuối cùng trường hợp không phải năm nhuận alertnam + 'không phải là năm nhuận'; } } // sử dụng kiem_tra_nam_nhuan4; Ví dụ 2 thực hiện lại ví dụ trên nhưng sử dụng return để trả kết quả vè, nếu true thì là năm nhuận, false thì không phải năm nhuận. // khai báo hàm function kiem_tra_nam_nhuannam { // nếu năm chia hết cho 100 // thì kiểm tra nó có chia hết cho 400 hay không if nam % 100 == 0 { // nêu chia hết cho 400 thì là năm nhuận if nam % 400 == 0{ return true; } else { // ngược lại không phải năm nhuận return false; } } else if nam % 4 == 0{ // trường hợp chia hết cho 4 thì là năm nhuận return true; } else { // cuối cùng trường hợp không phải năm nhuận return false; } } // sử dụng var flag = kiem_tra_nam_nhuan4; if flag{ alert'là năm nhuận'; } else { alert'không phải là năm nhuận'; } Trong ví dụ này thay vì alert trực tiếp trong hàm thì ta trả về kết quả true/false, sau đó kiểm tra kết quả này nếu true thì là năm nhuận, nếu false thì không phải là năm nhuận. 9. Các hàm có sẵn trong Javascript là gì? Hàm có sẵn trong Javascript là những hàm được tích hợp sẵn trong trình biên dịch của Javascript. Bạn có thể gọi đến những hàm này ở bất cứ đâu trong chương trình. Mình có soạn một series riêng về danh sách các hàm trong js, mới bạn tham khảo tại đây. Lời kết Qua bài này bạn đã hiểu được cách tạo và sử dụng hàm trong javascript, Sau này khi lập trình với JS thì bạn sử dụng hàm rất nhiều, vì vậy cần phải nắm vững nó nhé.
Function JavaScript hàm trong JavaScript là một thành phần không thể thiếu trong cấu trúc chương trình. Hàm giúp chương trình trở nên rõ ràng, dễ hiểu bằng cách gộp những đoạn code lặp lại. Nhờ vậy mà việc bảo trì phần mềm cũng dễ dàng hơn. Ngoài ra, một hàm tốt độc lập và thực hiện một chức năng nhất định có thể tái sử dụng trong nhiều dự án khác nhau. Điều này giúp nâng cao hiệu suất công việc của lập trình viên. 💡 Trong bài viết về tương tác người dùng với alert, confirm và prompt bạn đã biết về các hàm có sẵn như alert, confirm và prompt. Sau đây, mình sẽ giới thiệu những thành phần cơ bản của hàm trong JavaScript. Qua đó, bạn sẽ hiểu hàm là gì, cách xây dựng hàm và ứng dụng hàm vào các dự án. Hàm trong Javascript là gì? Hàm trong JavaScript là một chương trình con giúp thực thi một công việc cụ thể. Để định nghĩa hàm trong JavaScript, bạn sử dụng từ khoá function với cú pháp là function functionName[parameter1], [parameter2],... { statement1; statement2; ... } Trong đó function là một từ khóa trong JavaScript dùng để định nghĩa hàm. functionName là tên của hàm tên tự đặt. [parameter1], [parameter2],... danh sách các tham số của hàm không bắt buộc. Cuối cùng là thân hàm, bao gồm một hoặc nhiều câu lệnh nằm trong cặp dấu ngoặc {}. Ví dụ hàm sayHello function sayHello { from } Để gọi hàm, bạn sử dụng tên hàm function sayHello { from } sayHello; // Hello from Khi gọi hàm, đoạn code bên trong thân hàm sẽ được thực thi. Trong ví dụ trên, đoạn code được thực hiện hai lần ứng với hai lần gọi hàm. Bạn có thể thấy rằng, hàm giúp tránh lặp lại code. Giả sử bạn cần thay đổi nội dung với trên, bạn chỉ cần thay đổi một chỗ bên trong thân hàm. Đến đây chắc bạn đã phần nào hiểu được hàm là gì rồi phải không? Sau đây, mình sẽ đi vào chi tiết các đặc điểm của hàm trong JavaScript. Biến cục bộ trong hàm Một biến được khai báo bên trong hàm, chỉ sử dụng được bên trong thân hàm đó. Biến này gọi là biến cục bộ hay biến địa phương. Ví dụ về biến cục bộ trong JavaScript function sayHello { const message = "Hello from } sayHello; // Hello from // Uncaught ReferenceError message is not defined Trong ví dụ trên, biến message là biến cục bộ bên trong hàm sayHello. Tức là biến message chỉ dùng được ở trong thân hàm sayHello. Khi bạn cố gắng truy cập vào biến message ở ngoài hàm, bạn sẽ bị lỗi Uncaught ReferenceError message is not defined. Biến ngoài hàm trong JavaScript Một hàm trong JavaScript có thể truy cập vào biến được khai báo bên ngoài hàm, ví dụ let message = "Hello from function sayHello { } sayHello; // Hello from Hơn nữa, bạn có thể thay đổi giá trị của biến ngoài hàm từ trong thân hàm let message = "Hello from function sayHello { message = "Hi!"; } sayHello; // Hi! // Hi! Tuy nhiên, nếu bên trong thân hàm khai báo một biến trùng tên với biến ngoài hàm thì biến ngoài hàm "bị bỏ qua" let message = "Hello from function sayHello { let message = "Hi!"; } sayHello; // Hi! // Hello from 📝 Biến toàn cục Một biến được khai báo ở ngoài tất cả các hàm, gọi là biến toàn cục. Biến toàn cục có thể được sử dụng và thay đổi giá trị ở mọi nơi trong chương trình. Vì vậy, bạn nên hạn chế sử dụng biến toàn cục. Điều này giúp hàm trở nên tốt hơn, dễ dàng tái sử dụng hơn vì nó độc lập với các biến bên ngoài. Truyền tham số vào hàm Trong trường hợp bạn muốn sử dụng giá trị của biến bên ngoài vào trong thân hàm, bạn có thể truyền tham số vào hàm thay vì sử dụng biến toàn cục. Ví dụ truyền tham số vào hàm function sayHellomessage { } sayHello"Hello!"; // Hello! sayHello"Hi!"; // Hi! Khi hàm sayHello được gọi, giá trị string được sao chép copy vào biến cục bộ message. Trong thân hàm sẽ sử dụng biến cục bộ đó. khi truyền tham số vào hàm ngoại trừ object là kiểu dữ liệu tham chiếu, hàm trong JavaScript luôn thực hiện sao chép dữ liệu mà không làm thay đổi giá trị biến bên ngoài. Ví dụ let message = "Hello from function sayHellomessage { message = "Hi!"; } sayHello; // Hi! // Hello from Bạn thấy rằng là bên trong hàm đã gán giá trị Hi! cho biến message. Nhưng giá trị của biến message bên ngoài không hề thay đổi. 📝 Số lượng tham số của hàm là không giới hạn. Ví dụ hàm có nhiều tham số function sayHellomessage, site { + " from " + site; } sayHello"Hello", " // Hello from Giá trị tham số mặc định Đối với hàm có tham số mà khi gọi hàm, bạn không truyền giá trị vào thì giá trị của tham số đó là undefined, ví dụ function sayHellomessage, site { + " from " + site; } sayHello"Hello"; // Hello from undefined Trong trường hợp này, bạn có thể định nghĩa "giá trị mặc định" cho tham số bằng cách sử dụng toán tử gán = như sau function sayHellomessage, site = " { + " from " + site; } sayHello"Hello"; // Hello from Lúc này, nếu bạn không truyền giá trị vào tham số site thì giá trị của nó mặc định là Trong ví dụ trên, giá trị mặc định chỉ là một giá trị string. Tuy nhiên, giá trị mặc định có thể là một biểu thức hoặc thậm chí là một hàm khác, ví dụ function aFunction { // code } function sayHellomessage, site = aFunction { + " from " + site; } Trong ví trên, hàm aFunction chỉ được gọi khi bạn không truyền giá trị cho tham số site. Return trong JavaScript Hàm trong JavaScript có thể trả về giá trị khi gọi hàm. Ví dụ hàm tính tổng hai số function suma, b { return a + b; } const result = sum1, 2; // 3 Từ khóa return trong JavaScript có thể đặt ở bất kỳ đâu trong thân hàm. Khi gặp từ khóa return, hàm sẽ dừng lại và trả về giá trị sau return. Có thể dùng nhiều từ khóa return trong hàm function suma, b { if a === null a === undefined { số không hợp lệ!"; return; } if b === null b === undefined { số không hợp lệ!"; return; } return a + b; } const result1 = sum; // Tham số không hợp lệ! Ví dụ trên, mình kiểm tra điều kiện cho a và b. Nếu chúng bằng null hoặc undefined thì sẽ return luôn mà không thực hiện tính tổng. Bạn cũng thấy rằng, hai vị trí return đầu tiên không có giá trị nào theo sau. Khi đó, giá trị trả về mặc định là undefined function suma, b { return; } let r = sum1, 2; // undefined Ngoài ra, nếu hàm không có return thì giá trị trả về cũng là undefined function suma, b {} let r = sum1, 2; // undefined không được xuống dòng ngay sau return. Vì JavaScript sẽ hiểu là bạn không return giá trị nào cả. Ví dụ function suma, b { return; a + b; } const result = sum1, 2; // undefined Trình thông dịch JavaScript sẽ tự động thêm dấu ; ngay sau return. Do đó, giá trị trả về của hàm trên là undefined. Và thành phần a + b phía dưới sẽ không bao giờ được chạy tới. Nếu cần xuống dòng thì bạn phải đưa giá trị trả về vào trong cặp dấu ngoặc đơn như sau function suma, b { return a + b; } const result = sum1, 2; // 3 Cách đặt tên hàm trong JavaScript Quy tắc đặt tên hàm trong JavaScript cũng giống như quy tắc đặt tên biến hay hằng trong JavaScript Bắt đầu bằng chữ cái, dấu gạch dưới _ hoặc kí tự "đô la" $. Sau kí tự đầu tiên, ngoài những kí tự trên, bạn có thể sử dụng thêm số 0-9. Không sử dụng từ khoá và từ dự trữ. Chuẩn hóa cách đặt tên hàm Vì hàm ứng với một hành động, nên tên hàm chuẩn thường bắt đầu bằng một động từ. Ví dụ một số động từ hay dùng để đặt tên hàm get... - trả về một giá trị. set... - gán giá trị cho một biến. check... - kiểm tra một số thứ và trả về giá trị boolean. display... - hiển thị một số thứ. ... Dĩ nhiên, JavaScript không quy định bạn phải đặt tên như vậy. Bạn chỉ cần đặt tên đúng theo quy tắc phía trên là đủ. Nhưng rõ ràng là nếu bạn đặt tên đúng chuẩn thì đồng nghiệp hoặc chính bản thân bạn khi đọc code sẽ dễ dàng hiểu được ý nghĩa của từng hàm. Sự phát sinh hàm trong chương trình Khi lập trình, thông thường sẽ có hai trường hợp mà bạn nên viết hàm Một đoạn chương trình được lặp đi, lặp lại nhiều lần. Việc gom chúng lại thành một hàm sẽ giúp chương trình ngắn gọn hơn, dễ hiểu hơn. Và khi cần thay đổi, bạn chỉ cần sửa một lần trong nội dung hàm, thay vì phải sửa nhiều chỗ. Bạn cần tách toàn bộ chương trình thành những phần nhỏ hơn. Hay còn gọi là module hoá. Lúc này, bạn có thể xây dựng logic cho toàn bộ chương trình trước khi thật sự định nghĩa nội dung từng hàm. Cách tiếp cận này gọi là "top-down". Với những dự án lớn, mỗi thành viên thường chỉ được làm những module nhỏ trong toàn bộ một project lớn. Sau đó khi các module nhỏ hoàn thành, sẽ có người ghép những module nhỏ đó thành một chương trình hoàn chỉnh. Do đó, việc phân chia chương trình thành những hàm tốt là vô cùng quan trọng. Như thế nào là một hàm tốt? Đây là một câu hỏi rất khó để trả lời. Theo mình, hàm tốt là hàm thỏa mãn một số điều kiện sau Một hàm chỉ thực hiện một chức năng duy nhất Độc lập với các yếu tố bên ngoài biến toàn cục, môi trường thực thi,... Dễ dàng tái sử dụng Tuy nhiên, không phải lúc nào bạn cũng có thể thoả mãn những yêu cầu trên. Hoặc không nhất thiết phải thoả mãn tất cả những yêu cầu trên. Pure function và non-pure function Nhìn chung, có hai loại hàm trong JavaScript là pure function hàm thuần khiết và non-pure function hàm không thuần khiết. Hàm thuần khiết là hàm không phụ thuộc vào yếu tố bên ngoài biến toàn cục, môi trường thực thi,.... Bất cứ khi nào bạn gọi hàm thuần khiết với cùng một đối số thì kết quả trả về luôn giống nhau. Do đó, pure function rất dễ để sử dụng, tái sử dụng hay bảo trì,... Theo mình, hàm thuần khiết là một hàm tốt. Ví dụ hàm thuần khiết function pureFuncnumber, factor { return number * factor; } let ret = pureFunc2, 10; // 20 Bạn thấy rằng, với cùng một giá trị truyền vào là 2 và 10 thì kết quả luôn là 20. Do đó, hàm trên là hàm thuần khiết. Ngược lại với hàm thuần khiết, hàm không thuần khiết là hàm phụ thuộc vào biến toàn cục hay môi trường thực thi. Vì vậy, khi bạn gọi cùng một hàm với cùng một đối số, nhưng kết quả lại có thể khác nhau. let factor = 10; function nonPureFuncnumber { return number * factor; } let ret = nonPureFunc2; // 20 factor = 11; ret = nonPureFunc2; // => 22 Rõ ràng, hàm nonPureFunc không phải là hàm thuần khiết. Vì hàm này phụ thuộc vào biến ngoài hàm là factor. Nghĩa là khi giá trị của biến factor thay đổi, kết quả trả về của hàm cũng thay đổi dù cho cùng giá trị truyền vào là 2. Tổng kết Vậy hàm là gì? Hàm trong JavaScript là một chương trình con giúp thực thi một công việc cụ thể với cú pháp là function functionName[parameter1], [parameter2],... { statement1; statement2; ... } Trong đó Tham số truyền vào hàm được sao chép vào biến cục bộ bên trong hàm. Trường hợp không truyền giá trị vào thì giá trị của tham số là undefined. Bạn có thể sử dụng toán tử = để khai báo giá trị mặc định cho tham số trong hàm. Biến cục bộ khai báo bên trong hàm chỉ dùng được ở thân hàm. Code bên ngoài không thể truy cập vào biến cục bộ trong hàm. Hàm có thể đọc và cập nhật giá trị của biến ngoài hàm. Nhưng khi bên trong hàm có khai báo một biến cùng tên với biến ngoài hàm thì biến ngoài hàm bị "bỏ qua". Hàm có thể trả về giá trị bằng cách dùng từ khóa return. Có thể có nhiều từ khóa return trong thân hàm. Khi gặp từ khóa return, hàm sẽ dừng lại ngay lập tức và trả về giá trị sau return. Nếu không có giá trị, biểu thức,... nào sau return, hoặc không có từ khóa return thì giá trị trả về của hàm là undefined. Quy tắc đặt tên hàm cũng giống quy tắc đặt tên biến và hằng. Và tên hàm nên bắt đầu bằng một động từ. Nên ưu tiên viết hàm thuần khiết để dễ dàng tái sử dụng, dễ dàng kiểm thử và tránh lỗi. Thực hành Bài 1 Viết hàm trả về giá trị nhỏ nhất của hai số giả sử giá trị truyền nào luôn là số. Xem đáp án function mina, b { return a < b ? a b; } min2, 5; // 2 min4, -1; // -1 min3, 3; // 3 Trường hợp hai số truyền vào bằng nhau thì dĩ nhiên kết quả là giá trị của hai số đó. Bài 2 Viết hàm kiểm tra xem một số có phải là số nguyên tố hay không. Nếu là số nguyên tố thì trả về true. Ngược lại, trả về false. Xem đáp án function isPrimenumber { if isNaNnumber return false; if number < 2 return false; if number === 2 return true; for i = 2; i * i <= number; i++ { if number % i === 0 return false; } return true; } // Ví dụ isPrime"abc"; // false isPrime0; // false isPrime2; // true isPrime5; // true isPrime6; // false Trong đó, hàm isNaNnumber dùng để kiểm tra giá trị của biến number xem có phải là NaN hay không. Nói cách khác, nếu isNaNnumber trả về false thì giá trị của number là số.
hàm tính tiền trong javascript