Hướng dẫn what are the 3 ways we can define a function in javascript 3? - 3 cách chúng ta có thể xác định một hàm trong javascript 3 là gì?

Các chức năng là một trong những thành phần chính trong lập trình. Chúng được xác định để thực hiện một nhiệm vụ cụ thể và có thể được gọi nhiều lần để thực thi nhiệm vụ đó. Sự khác biệt chính giữa các hàm trong JavaScript và các ngôn ngữ lập trình khác là trong JavaScript, các hàm là các đối tượng hạng nhất, có nghĩa là chúng hoạt động như các đối tượng và có thể được gán cho các biến, mảng và các đối tượng khác.

Bài đăng này thảo luận về ba cách khác nhau để xác định các chức năng:

  1. Tuyên bố chức năng.
  2. Biểu thức chức năng.
  3. Hàm máy phát.

Tuyên bố chức năng

Tuyên bố chức năng có lẽ là cách phổ biến nhất để khai báo một hàm. Hãy cùng nhìn vào cú pháp của nó:

function name (parameter)
 {
       statements 
 }

Tuyên bố chức năng được tạo thành từ từ khóa, & nbsp; ________ 12, theo sau là tên bắt buộc của hàm, và sau đó là tham số trong một cặp dấu ngoặc đơn. .

Điều quan trọng là bạn biết sự khác biệt giữa tham số và đối số của một hàm. Một tham số là một biến được sử dụng để xác định một hàm. Đối số là dữ liệu thực tế bạn truyền vào các tham số của hàm khi gọi nó.

Đầu tiên, chúng ta hãy xem một ví dụ đơn giản:

function hello(name)
{
console.log("Hello "+ name)
}

hello('stuti')
// Hello stuti

hello(12)
// Hello 12

Một hàm, & nbsp; ____ 13, được khai báo với một đối số, & nbsp; ____ 14, ghi một tin nhắn trong bảng điều khiển. Như bạn có thể thấy từ ví dụ, vì không có loại được chỉ định trên đối số, nó hoạt động cho cả chuỗi và số nguyên. Tuy nhiên, điều gì sẽ xảy ra nếu tôi chỉ muốn chức năng của mình chào tên, không phải là một số? Đáng buồn thay, không có phương pháp nào được xây dựng trước để thực hiện việc này trong JavaScript, vì vậy chúng ta phải kiểm tra thủ công loại đối số mà Lừa đã vượt qua trong chức năng như thế này:

function hello(name) {
    if (typeof name === 'string')
        console.log("Hello " + name)

    else
        console.log("Please input a Name")
}

hello(12)   // Plese input a Name

Theo mặc định, các chức năng trả về các giá trị không xác định. Để trả về bất kỳ giá trị nào khác, hàm phải có câu lệnh trả về chỉ định giá trị để trả về.

function something(){

}
console.log(something())         // undefined

function notSomething(){
    return 1
}

console.log(notSomething())       // 1

Nâng & nbsp; trong khai báo chức năng

Nói một cách đơn giản, điều đó có nghĩa là bất kể bạn khai báo các chức năng hoặc biến ở đâu, khi mã được thực thi, họ đã di chuyển lên đỉnh phạm vi của chúng. Điều này được gọi là nâng cao.

Hãy xem một ví dụ:

myName()
// My name is Stuti Chahuhan

function myName() {
    console.log(`My name is Stuti Chauhan`)
}

Ở đây tôi đã gọi chức năng trước khi tôi tuyên bố nó - đây là nâng.

Biểu thức chức năng

Một biểu thức chức năng rất giống với và có gần như một cú pháp như một câu lệnh hàm. Sự khác biệt chính là một biểu thức chức năng không bắt đầu với từ khóa & nbsp; & nbsp; ________ 12.

function hello(name)
{
console.log("Hello "+ name)
}

hello('stuti')
// Hello stuti

hello(12)
// Hello 12
4 của hàm cũng là tùy chọn. .

let checkNumber = function check (num){
    return (num %2==0)?"even" : "odd"
    }
console.log(checkNumber(50))    
// even
Bây giờ chúng ta hãy xem xét cách xác định hàm trên.
//Anonymous Function 

let checkNumber = function  (num){
    return (num %2==0)?"even" : "odd"
    }
console.log(checkNumber(50))    
// even
Một điểm khác biệt quan trọng giữa khai báo chức năng và biểu thức chức năng là không có tổn thương trong một biểu thức chức năng. Nếu bạn thử cùng một chương trình với chương trình trong khai báo chức năng nâng, bạn sẽ gặp phải lỗi.

myName()
// ReferenceError: myName is not defined

let myName =function () {
    console.log(`My name is Stuti Chauhan`)
}

An important point of difference between Function Declaration and Function Expression is that there is no hoisting in a Function Expression. If you try the same program as the one in hoisting Function Declaration, you’ll encounter an error.

myName()
// ReferenceError: myName is not defined

let myName =function () {
    console.log(`My name is Stuti Chauhan`)
}

Iife (ngay lập tức được gọi biểu thức chức năng)

Điều này có nghĩa là chức năng chạy ngay khi nó được xác định. Ở đây, biểu thức chức năng được đặt trong & nbsp; một toán tử nhóm ().

( function () {
        let num = 4
        return num
    })()
//4

Tại sao chúng ta cần một iife trong biểu thức chức năng điển hình của chúng ta? Chúng tôi xác định chức năng và sau đó gọi nó sau đó có bất kỳ số lần nào, nhưng nếu tôi muốn gọi chức năng chỉ một lần để tạo ra một đầu ra và đó là nó? Đây là nơi iife đến. Nó ngay lập tức được thực hiện và không bao giờ trong tương lai được truy cập bởi chương trình nữa. Vì nó không được gọi lại, nên nó không cần một cái tên, nên một biểu thức chức năng ẩn danh được ưa thích cho iife.

Hàm máy phát

Các chức năng thông thường tuân theo mô hình chạy để hoàn thành và không thể dừng lại trước khi thực hiện dòng cuối cùng. Nếu bạn muốn thoát ở giữa thực thi, bạn phải trả lại hoặc ném lỗi.

Một hàm máy phát có thể được dừng giữa chừng thông qua thực thi. Khi nó được gọi lại, nó tiếp tục từ nơi nó dừng lại.

Nó được tuyên bố giống như một hàm bình thường nhưng với dấu hoa thị * sau từ khóa

function hello(name)
{
console.log("Hello "+ name)
}

hello('stuti')
// Hello stuti

hello(12)
// Hello 12
2; Bất kỳ số lượng không gian có thể được bao gồm giữa chúng.

Một điều nữa cần lưu ý: Trong JavaScript, một trình tạo là một hàm trả về một đối tượng mà bạn có thể gọi

function hello(name)
{
console.log("Hello "+ name)
}

hello('stuti')
// Hello stuti

hello(12)
// Hello 12
9. Mỗi lời cầu khẩn của
function hello(name)
{
console.log("Hello "+ name)
}

hello('stuti')
// Hello stuti

hello(12)
// Hello 12
9 sẽ trả về một đối tượng có cấu trúc như thế này:

{ 
  value: Any,
  done: true|false
} 

Bây giờ, đối tượng này có hai thuộc tính:

function hello(name) {
    if (typeof name === 'string')
        console.log("Hello " + name)

    else
        console.log("Please input a Name")
}

hello(12)   // Plese input a Name
1 và
function hello(name) {
    if (typeof name === 'string')
        console.log("Hello " + name)

    else
        console.log("Please input a Name")
}

hello(12)   // Plese input a Name
2.
function hello(name) {
    if (typeof name === 'string')
        console.log("Hello " + name)

    else
        console.log("Please input a Name")
}

hello(12)   // Plese input a Name
3 là giá trị thực tế của đối tượng; trong khi & nbsp; ________ 22 là thuộc tính chỉ định việc chấm dứt hàm - giá trị mặc định là sai và khi nó trở thành đúng, hàm dừng lại.

Hãy hiểu nó tốt hơn với một ví dụ đơn giản:

function hello(name)
{
console.log("Hello "+ name)
}

hello('stuti')
// Hello stuti

hello(12)
// Hello 12
0

Bên trong cơ thể chức năng, chúng tôi không sử dụng từ khóa trả về - thay vào đó

function hello(name) {
    if (typeof name === 'string')
        console.log("Hello " + name)

    else
        console.log("Please input a Name")
}

hello(12)   // Plese input a Name
5 được sử dụng. Nếu được sử dụng, nó sẽ thay đổi thuộc tính
function hello(name) {
    if (typeof name === 'string')
        console.log("Hello " + name)

    else
        console.log("Please input a Name")
}

hello(12)   // Plese input a Name
2 thành
function hello(name) {
    if (typeof name === 'string')
        console.log("Hello " + name)

    else
        console.log("Please input a Name")
}

hello(12)   // Plese input a Name
8 và chức năng sẽ kết thúc - bất cứ điều gì sau khi nó sẽ không thực thi.
function hello(name) {
    if (typeof name === 'string')
        console.log("Hello " + name)

    else
        console.log("Please input a Name")
}

hello(12)   // Plese input a Name
9 đưa ra giá trị được gán cho nó.

Đầu tiên, chúng tôi xác định chức năng của chúng tôi, và sau đó chúng tôi gọi nó. Gọi một hàm máy phát dẫn đến một đối tượng máy phát, được lưu trữ trong gen biến.

Sau đó, chúng tôi gọi đối tượng bằng thuộc tính

function hello(name)
{
console.log("Hello "+ name)
}

hello('stuti')
// Hello stuti

hello(12)
// Hello 12
9 và
function hello(name) {
    if (typeof name === 'string')
        console.log("Hello " + name)

    else
        console.log("Please input a Name")
}

hello(12)   // Plese input a Name
1,

Lần đầu tiên

function hello(name)
{
console.log("Hello "+ name)
}

hello('stuti')
// Hello stuti

hello(12)
// Hello 12
9 được sử dụng, việc thực hiện chức năng bắt đầu. Đầu tiên, nó chạy Console.log (Đầu tiên để thực thi trực tuyến) và ghi lại nó vào bảng điều khiển, sau đó nó gặp ________ 33 mang lại giá trị cho một lần tạm dừng và việc thực hiện dừng lại.

Lần thứ hai

function hello(name)
{
console.log("Hello "+ name)
}

hello('stuti')
// Hello stuti

hello(12)
// Hello 12
9 được gọi, nó chọn ra nơi nó rời đi lần trước. Một lần nữa, trước tiên nó chạy ____ 35 & nbsp; và sau đó gặp
function something(){

}
console.log(something())         // undefined

function notSomething(){
    return 1
}

console.log(notSomething())       // 1
6, và giá trị cuối của chức năng được mang lại, chức năng dừng lại.

Lần thứ ba

function hello(name)
{
console.log("Hello "+ name)
}

hello('stuti')
// Hello stuti

hello(12)
// Hello 12
9 được gọi, không xác định được xem là kết quả. Điều này xảy ra bởi vì một đối tượng được tạo từ hàm máy phát chỉ có thể được lặp lại một lần - đối tượng giờ là vô dụng và một đối tượng mới phải được tạo cho chương trình để bắt đầu lại.

function hello(name)
{
console.log("Hello "+ name)
}

hello('stuti')
// Hello stuti

hello(12)
// Hello 12
1

Nếu tôi sử dụng ____38 thay vì

function something(){

}
console.log(something())         // undefined

function notSomething(){
    return 1
}

console.log(notSomething())       // 1
6, giá trị của dữ liệu sẽ được thay đổi thành
function hello(name) {
    if (typeof name === 'string')
        console.log("Hello " + name)

    else
        console.log("Please input a Name")
}

hello(12)   // Plese input a Name
8 và không có gì được thực hiện sau đó.

Máy phát điện, khi kết hợp với lời hứa, là một công cụ rất mạnh mẽ để lập trình không đồng bộ. Họ giảm thiểu, nếu không hoàn toàn loại bỏ, các vấn đề với các cuộc gọi lại.

Kết luận: Cách nào là tốt nhất?

Chà, chúng ta không thể so sánh chúng và nói rằng một người tốt hơn những người khác - loại khai báo phụ thuộc vào tình huống hoặc điều kiện.

Bạn có thể sử dụng chức năng Trình tạo cho chức năng Async tốt hơn và biểu thức chức năng ẩn danh cho chức năng bạn muốn thực thi ngay lập tức.

Tài liệu tham khảo

Tài liệu Mozilla

3 cách chúng ta có thể xác định một chức năng trong JavaScript là gì?

Có 3 cách viết một chức năng trong JavaScript: Tuyên bố chức năng.Biểu thức chức năng.Hàm mũi tên.Function Declaration. Function Expression. Arrow Function.

Làm thế nào để bạn xác định chức năng trong JavaScript?

Hàm JavaScript được xác định với từ khóa chức năng, theo sau là tên, theo sau là dấu ngoặc đơn ().Tên chức năng có thể chứa các chữ cái, chữ số, dấu gạch dưới và dấu hiệu đô la (cùng quy tắc với các biến).Các 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, ...)with the function keyword, followed by a name, followed by parentheses (). Function names can contain letters, digits, underscores, and dollar signs (same rules as variables). The parentheses may include parameter names separated by commas: (parameter1, parameter2, ...)

Có bao nhiêu loại chức năng trong JavaScript?

Các chức năng trong JavaScript rất giống với các chức năng của một số ngôn ngữ cấp cao khác như TypeScript và có hai loại hàm: được xác định trước và được xác định bởi người dùng.two types of functions: predefined and user-defined.