Hàm JavaScript được xác định bằng từ khóa
function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
1, theo sau là tên, theo sau là dấu ngoặc đơn []Tên hàm có thể chứa các chữ cái, chữ số, dấu gạch dưới và ký hiệu đô la [quy tắc giống như biến]
Dấu ngoặc đơn có thể bao gồm các tên tham số được phân tách bằng dấu phẩy.
[tham số1, tham số2,. ]
Mã được thực thi bởi hàm, được đặt bên trong dấu ngoặc nhọn. {}
tên hàm[tham số1, tham số2, tham số3] {
// mã sẽ được thực thi
}
Các tham số của hàm được liệt kê bên trong cặp ngoặc đơn [] trong phần định nghĩa hàm
Đối số của hàm là các giá trị mà hàm nhận được khi nó được gọi
Bên trong hàm, các đối số [các tham số] hoạt động như các biến cục bộ
Gọi hàm
Đoạn mã bên trong hàm sẽ thực thi khi "cái gì đó" triệu gọi [gọi] hàm
- Khi một sự kiện xảy ra [khi người dùng nhấp vào nút]
- Khi nó được gọi [được gọi] từ mã JavaScript
- Tự động [tự gọi]
Bạn sẽ học được nhiều hơn về lời gọi hàm sau trong hướng dẫn này
Hàm trả về
Khi JavaScript đạt đến câu lệnh
function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
2, hàm sẽ ngừng thực thiNếu hàm được gọi từ một câu lệnh, JavaScript sẽ "quay lại" để thực thi mã sau câu lệnh được gọi
Các hàm thường tính toán giá trị trả về. Giá trị trả về được "trả lại" cho "người gọi"
Ví dụ
Tính tích của hai số và trả về kết quả
cho x = myFunction[4, 3];
function myFunction[a, b] {
return a * b;
}
Kết quả trong x sẽ là
Tự mình thử »Tại sao chức năng?
Bạn có thể sử dụng lại mã. Xác định mã một lần và sử dụng nó nhiều lần
Bạn có thể sử dụng cùng một mã nhiều lần với các đối số khác nhau để tạo ra các kết quả khác nhau
Ví dụ
Đổi độ F sang độ C
function toC[fahrenheit] {
return [5/9] * [fahrenheit-32];
}
document.getElementById["demo"].innerHTML = toCelsius[77];
Toán tử [] gọi hàm
Sử dụng ví dụ trên,
function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
3 đề cập đến đối tượng chức năng và function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
4 đề cập đến kết quả chức năngTruy cập một hàm không có [] sẽ trả về đối tượng hàm thay vì kết quả hàm
Ví dụ
function toC[fahrenheit] {
return [5/9] * [fahrenheit-32];
}
document.getElementById["demo"].innerHTML = toCelsius;
Các hàm được sử dụng làm giá trị biến
Các hàm có thể được sử dụng giống như cách bạn sử dụng các biến, trong tất cả các loại công thức, bài tập và phép tính
Ví dụ
Thay vì sử dụng một biến để lưu trữ giá trị trả về của một hàm
let x = toCelsius[77];
let text = "Nhiệt độ là " + x + " Độ C";
Bạn có thể sử dụng hàm trực tiếp, dưới dạng giá trị biến
let text = "Nhiệt độ là " + toC[77] + " Độ C";
Tự mình thử »Bạn sẽ học được nhiều hơn về các chức năng sau trong hướng dẫn này
Biến cục bộ
Các biến được khai báo trong hàm JavaScript, trở thành ĐỊA PHƯƠNG cho hàm
Các biến cục bộ chỉ có thể được truy cập từ bên trong hàm
Ví dụ
// mã ở đây KHÔNG thể sử dụng carName
function myFunction[] {
let carName = "Volvo";
// mã ở đây CÓ THỂ sử dụng carName
}
// mã ở đây KHÔNG thể sử dụng carName
Tự mình thử »Vì các biến cục bộ chỉ được nhận dạng bên trong các hàm của chúng, các biến có cùng tên có thể được sử dụng trong các hàm khác nhau
Hãy xem xét đoạn mã sau. var tensquared = [function[x] {return x*x;}[10]];Mã trên có hoạt động không?
MỘT]. Vâng, hoàn hảo
b]. Lỗi
C]. Ngoại lệ sẽ được ném
Đ]. Bộ nhớ bị rò rỉ
1 câu trả lời
Đã trả lời bởi Khách vào 2021-06-04 17. 10. 56. phiếu bầu 26.
Vâng, hoàn hảo
Tên hàm là tùy chọn đối với các hàm được định nghĩa là biểu thức. Biểu thức chức năng đôi khi được xác định và gọi ngay lập tức
Điều này nghe có vẻ tầm thường và trên thực tế, nó không quan trọng với ECMAscript 6 giới thiệu một hàm
function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
5 mới cho mục đích chính xác này. Tuy nhiên, trước ECMAScript 6, điều này phức tạp hơn một chút, vì không cung cấp phương thức tương đương với phương thức function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
5Vấn đề là, trong đặc tả ECMAScript, các số nguyên chỉ tồn tại về mặt khái niệm; . e. , các giá trị số luôn được lưu trữ dưới dạng giá trị dấu phẩy động
Với ý nghĩ đó, giải pháp tiền ECMAScript-6 đơn giản và rõ ràng nhất [cũng đủ mạnh để trả về
function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
7 ngay cả khi một giá trị không phải là số như chuỗi hoặc function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
0 được truyền cho hàm] sẽ là cách sử dụng sau của function isInteger[x] { return [x ^ 0] === x; }
Giải pháp sau đây cũng sẽ hoạt động, mặc dù không thanh lịch như giải pháp trên
function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
Hàm sau [hoặc với
function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
1 hoặc function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
2 thay cho function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
3] cũng có vẻ hữu ích, nhưng kết quả không hoàn toàn giống với hai hàm trênfunction isInteger[x] { return Math.round[x] === x; }
Sự khác biệt là, các giải pháp dựa trên
function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
4 này trả về function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
5 cho function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
6 và function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
7, trong khi các giải pháp khác [và đáng chú ý là function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
5 của ES6] trả về function isInteger[x] { return [typeof x === 'number'] && [x % 1 === 0]; }
7Một giải pháp không chính xác khá phổ biến khác là như sau
function isInteger[x] { return [x ^ 0] === x; }
1Mặc dù cách tiếp cận dựa trên
function isInteger[x] { return Math.round[x] === x; }
0 này sẽ hoạt động tốt với nhiều giá trị của function isInteger[x] { return Math.round[x] === x; }
1, nhưng khi function isInteger[x] { return Math.round[x] === x; }
1 trở nên khá lớn, nó sẽ không hoạt động bình thường. Vấn đề là function isInteger[x] { return Math.round[x] === x; }
3 buộc tham số đầu tiên của nó thành một chuỗi trước khi phân tích các chữ số. Do đó, khi số trở nên đủ lớn, biểu diễn chuỗi của nó sẽ được trình bày ở dạng hàm mũ [e. g. , function isInteger[x] { return Math.round[x] === x; }
4]. Theo đó, sau đó, function isInteger[x] { return Math.round[x] === x; }
3 sẽ cố gắng phân tích cú pháp function isInteger[x] { return Math.round[x] === x; }
4, nhưng sẽ ngừng phân tích cú pháp khi đến ký tự function isInteger[x] { return Math.round[x] === x; }
7 và do đó sẽ trả về giá trị là function isInteger[x] { return Math.round[x] === x; }
8. Quan sát