Mã javascript sau có hoạt động không var js function(x) (return x*x;)(10)

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 thi

Nế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];

Tự mình thử »

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ăng

Truy 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;

Tự mình thử »

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]; }
5

Vấ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ên

function 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]; }
7

Mộ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; } 
1

Mặ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

Chủ Đề