Ví dụ về hàm và thủ tục VBScript

⚡ Tóm tắt thông minh

Các hàm và thủ tục trong VBScript tổ chức mã thành các khối có thể tái sử dụng. Thủ tục Sub thực thi các câu lệnh mà không trả về giá trị, trong khi thủ tục Function trả về giá trị bằng cách gán nó cho tên hàm, và các đối số được truyền bằng ByRef hoặc ByVal.

  • 🧱 Code Tái sử dụng: Các thủ tục giúp phân chia mã thành các mô-đun, làm cho việc viết, gỡ lỗi và bảo trì dễ dàng hơn đối với các kịch bản lớn.
  • 📤 Thủ tục phụ: Một Sub thực thi một khối các câu lệnh giữa Sub và End Sub nhưng không trả về giá trị nào.
  • 📥 Quy trình hoạt động: Một hàm trả về một giá trị bằng cách gán giá trị đó cho tên hàm nằm giữa từ khóa `Function` và `End Function`.
  • 📞 Kêu gọi: Sử dụng từ khóa `call` để chạy một Sub, và sử dụng tên của một Function trong biểu thức để lấy kết quả của nó.
  • 🔁 ByRef so với ByVal: ByRef cho phép các thay đổi được lưu giữ sau khi gọi hàm; ByVal hoạt động trên bản sao, do đó các thay đổi không được lưu giữ.
  • ⚙️ Truyền mặc định: Theo mặc định, VBScript truyền các đối số bằng tham chiếu trừ khi bạn chỉ định ByVal.

Các hàm và thủ tục VBScript

Thủ tục VBScript

Các thủ tục VBScript chủ yếu được sử dụng để tổ chức và tái sử dụng mã. Chúng tôi đã sử dụng các ví dụ đơn giản cho đến bây giờ vì mục đích ở đây là học VBScript. Nhưng trong tình huống thực tế, mã không đơn giản như vậy. Khi bạn cố gắng triển khai một cái gì đó hữu ích, mã có thể trở nên phức tạp hơn. Có thể có hàng trăm dòng trải dài trên nhiều trang.

Nếu bạn không sắp xếp code đúng cách, toàn bộ quá trình mã hóa, gỡ lỗi và quản lý code sẽ trở nên thực sự phức tạp. Vì vậy, bạn nên sắp xếp hoặc mô-đun hóa code cẩn thận để code của bạn trở nên dễ quản lý.

Hơn nữa, giả sử bạn có một tập hợp các câu lệnh thực hiện một hành động cụ thể. Bạn muốn hành động tương tự được lặp lại nhiều lần. Vậy thì tại sao bạn phải viết đi viết lại cùng một đoạn mã? Bằng cách sử dụng các kỹ thuật hiệu quả, bạn có thể làm cho mã của mình có thể sử dụng lại được. Điều này sẽ giúp các nhà phát triển tổ chức mã đẹp mắt và người kiểm tra có thể xác định lỗi dễ dàng. Nói tóm lại, việc mô đun hóa và tái sử dụng mã là rất quan trọng để làm cho mã mạnh hơn, đáng tin cậy hơn và dễ bảo trì hơn. Ở đây có các thủ tục thành một bức tranh.

Các loại thủ tục trong VBScript

Một thủ tục là một khối mã thực hiện một chức năng duy nhất một cách lý tưởng. Một khối mã xử lý đầu vào hoặc xử lý một tệp là một ví dụ điển hình về hàm. Có hai loại thủ tục trong vbscript.

  1. Thủ tục phụ: Thủ tục phụ không trả về giá trị.
  2. Thủ tục hàm: Thủ tục hàm được sử dụng nếu bạn muốn trả về một giá trị.

Thủ tục phụ

Nếu bạn muốn thực thi một loạt câu lệnh mà không trả về bất kỳ giá trị nào thì bạn có thể sử dụng các thủ tục phụ.

Các thủ tục phụ bắt đầu và kết thúc bằng các câu lệnh Sub và End Sub tương ứng. Thủ tục phụ có thể nhận đối số nhưng không thể trả về giá trị. Các thủ tục phụ có thể có hoặc không có đầu vào.

Sub outputMessage()
document.write("Welcome")
End Sub

Chỉ viết mã này sẽ không xuất ra bất cứ thứ gì. Ở đây bạn đã tạo một thủ tục phụ có tên là outMessage. Tiếp theo, bạn cần gọi nó.

gọi đầu raMessage()

Kết hợp cả hai bộ mã này vào bên trong tag like this.

<script type="text/vbscript">

Sub outputMessage()
document.write("Welcome")
End Sub
call outputMessage()
</script>

Đầu ra của mã này sẽ là

Thủ tục phụ

Hàm VBScript

Nếu bạn muốn thực thi một chuỗi câu lệnh và trả về một giá trị, thì bạn cần sử dụng các thủ tục hàm, thường được gọi là hàm.

Các thủ tục hàm bắt đầu và kết thúc bằng các câu lệnh Hàm và Kết thúc hàm tương ứng.

Một thủ tục hàm có thể nhận hoặc không nhận đầu vào.

Các thủ tục hàm trả về một giá trị bằng cách gán giá trị đó cho tên của nó.

<script type="text/vbscript">
Function findArea(radius)
   const pi=3.14
   area = pi*radius*radius
   findArea = area
End Function
document.write("The area of the circle when the radius is 20 is " & findArea(20) &"<br/>")
document.write("The area of the circle when the radius is 10 is " & findArea(10))

</script>

Đầu ra của mã này sẽ là

Hàm VBScript

Tham số ByRef và ByVal

Bạn có thể chuyển các đối số VBScript cho các thủ tục bằng tham chiếu hoặc theo giá trị.

Nếu bạn không chỉ định bất cứ điều gì khi gọi một thủ tục thì theo mặc định, đối số/đối số sẽ được truyền theo tham chiếu.

Nếu những thay đổi được thực hiện đối với các đối số vẫn tồn tại ngay cả sau khi thủ tục được gọi, thì bạn cần chuyển các đối số VBScript bằng tham chiếu.

Khi một đối số được truyền theo giá trị, mọi thay đổi mà thủ tục được gọi thực hiện đối với giá trị của biến không tồn tại sau khi thủ tục được gọi.

Từ khóa ByRef và ByVal được sử dụng để truyền đối số theo tham chiếu và theo giá trị tương ứng.

Để hiểu sự khác biệt, trước tiên, hãy thực thi đoạn mã dưới đây và xem kết quả.

Bước 1) Sao chép mã vào trình soạn thảo của bạn

<script type="text/vbscript">
Function returnResult(ByRef value)
   value = value +1
   returnResult = value
End Function
Dim x
x=5
call returnResult(x)
document.write(x)
</script>

Bước 2) đầu ra là 6.

Bước 3) Thay đổi Hàm returnResult(ByRef value) thành Hàm returnResult(ByVal value)

Bước 4) Bây giờ đầu ra của bạn sẽ là 5.

Câu Hỏi Thường Gặp

Sử dụng Exit Sub bên trong một Sub, hoặc Exit Function bên trong một Function, để thoát khỏi thủ tục ngay trước khi kết thúc. Khi đó, chương trình sẽ quay lại dòng đã gọi nó.

Nếu bạn sử dụng từ khóa `call`, hãy đặt các đối số trong dấu ngoặc đơn. Nếu bạn bỏ qua `call`, đừng sử dụng dấu ngoặc đơn cho nhiều đối số. Sai sót này là một lỗi cú pháp VBScript phổ biến.

Đúng vậy. Một Sub hoặc Function trong VBScript có thể tự gọi chính nó, điều này được gọi là đệ quy. Luôn luôn bao gồm một điều kiện cơ sở để dừng các lời gọi, nếu không kịch bản sẽ lặp lại cho đến khi hết không gian bộ nhớ ngăn xếp.

Đúng vậy. Trí tuệ nhân tạo có thể phát hiện các câu lệnh trùng lặp, ví dụ:tracChuyển chúng vào một Sub hoặc Function với các tham số phù hợp, rồi cập nhật các lệnh gọi. Điều này giúp kịch bản ngắn gọn hơn và dễ bảo trì hơn.

Đúng vậy. Trí tuệ nhân tạo có thể. tracHãy giải thích cách một giá trị thay đổi khi sử dụng ByRef so với ByVal, hiển thị kết quả cho mỗi phương thức và đưa ra khuyến nghị nên sử dụng phương thức nào dựa trên việc người gọi có nên thấy sự thay đổi đó hay không.

Tóm tắt bài viết này với: