ฟังก์ชั่นและขั้นตอน VBScript พร้อมตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

ฟังก์ชันและโพรซีเดอร์ใน VBScript จัดระเบียบโค้ดเป็นบล็อกที่สามารถนำกลับมาใช้ใหม่ได้ โพรซีเดอร์ย่อย (Sub procedure) จะรันคำสั่งโดยไม่ส่งค่ากลับ ในขณะที่โพรซีเดอร์ฟังก์ชัน (Function procedure) จะส่งค่ากลับโดยการกำหนดค่าให้กับชื่อฟังก์ชัน และส่งผ่านอาร์กิวเมนต์โดยใช้ ByRef หรือ ByVal

  • 🧱 Code นำมาใช้ใหม่: ขั้นตอนการทำงานจะแบ่งโค้ดออกเป็นส่วนย่อย ทำให้เขียน แก้ไขข้อผิดพลาด และบำรุงรักษาสคริปต์ขนาดใหญ่ได้ง่ายขึ้น
  • 📤 ขั้นตอนย่อย: คำสั่ง Sub จะรันชุดคำสั่งระหว่าง Sub และ End Sub แต่จะไม่ส่งค่ากลับ
  • 📥 ขั้นตอนการทำงาน: ฟังก์ชันจะส่งคืนค่าโดยการกำหนดค่านั้นให้กับชื่อฟังก์ชันระหว่างคำว่า Function และ End Function
  • 📞 โทรศัพท์: ใช้คีย์เวิร์ด `call` เพื่อเรียกใช้ Sub และใช้ชื่อฟังก์ชันในนิพจน์เพื่อรับผลลัพธ์ของฟังก์ชันนั้น
  • 🔁 ByRef เทียบกับ ByVal: ByRef ช่วยให้การเปลี่ยนแปลงคงอยู่หลังจากการเรียกใช้ ในขณะที่ ByVal ทำงานกับสำเนา ดังนั้นการเปลี่ยนแปลงจะไม่คงอยู่
  • ⚙️ การส่งผ่านค่าเริ่มต้น: โดยค่าเริ่มต้น VBScript จะส่งผ่านอาร์กิวเมนต์โดยการอ้างอิง เว้นแต่คุณจะระบุ ByVal

ฟังก์ชันและขั้นตอนการทำงานของ VBScript

ขั้นตอน VBScript

ขั้นตอน VBScript ใช้เพื่อจัดระเบียบและนำโค้ดกลับมาใช้ใหม่เป็นหลัก จนถึงตอนนี้ เราใช้ตัวอย่างง่ายๆ มาโดยตลอด เนื่องจากจุดประสงค์ของบทความนี้คือการเรียนรู้ VBScript แต่ในสถานการณ์จริง โค้ดไม่ได้ง่ายอย่างนั้น เมื่อคุณพยายามนำสิ่งที่มีประโยชน์ไปใช้ โค้ดอาจซับซ้อนมากขึ้น อาจมีบรรทัดหลายร้อยบรรทัดที่ทอดยาวไปทั่วทั้งหลายหน้า

หากคุณไม่จัดระเบียบโค้ดอย่างเหมาะสม กระบวนการเขียนโค้ด ดีบัก และจัดการโค้ดทั้งหมดก็จะซับซ้อนมากขึ้น ดังนั้น คุณควรจัดระเบียบหรือแบ่งโค้ดอย่างระมัดระวังเพื่อให้จัดการโค้ดได้ง่าย

นอกจากนี้ สมมติว่าคุณมีชุดคำสั่งที่ดำเนินการอย่างใดอย่างหนึ่ง คุณต้องการให้การกระทำเดิมซ้ำหลายครั้ง แล้วทำไมคุณถึงต้องเขียนโค้ดเดิมซ้ำแล้วซ้ำเล่า? ด้วยการใช้เทคนิคที่มีประสิทธิภาพ คุณสามารถทำให้โค้ดของคุณสามารถนำมาใช้ซ้ำได้ สิ่งนี้จะช่วยให้นักพัฒนาจัดระเบียบโค้ดได้อย่างสวยงามและผู้ทดสอบสามารถระบุจุดบกพร่องได้อย่างง่ายดาย กล่าวโดยสรุป การทำให้โค้ดเป็นโมดูลและการนำกลับมาใช้ใหม่เป็นสิ่งสำคัญมากในการทำให้โค้ดมีประสิทธิภาพ เชื่อถือได้ และบำรุงรักษาได้ง่ายขึ้น มาที่นี่ขั้นตอนเป็นภาพ

ประเภทของขั้นตอนใน VBScript

ขั้นตอนคือกลุ่มของโค้ดที่ทำหน้าที่เดียวได้อย่างดีเยี่ยม บล็อกของโค้ดที่ประมวลผลอินพุตหรือจัดการไฟล์เป็นตัวอย่างที่ดีของฟังก์ชัน มีขั้นตอนอยู่สองประเภท วีบีสคริปต์.

  1. ขั้นตอนย่อย: ขั้นตอนย่อยไม่ส่งกลับค่า
  2. ขั้นตอนฟังก์ชัน: ขั้นตอนฟังก์ชันจะใช้ถ้าคุณต้องการส่งกลับค่า

ขั้นตอนย่อย

หากคุณต้องการดำเนินการชุดคำสั่งโดยไม่ส่งคืนค่าใดๆ คุณสามารถใช้ขั้นตอนย่อยได้

ขั้นตอนย่อยเริ่มต้นและสิ้นสุดด้วยคำสั่ง Sub และ End Sub ตามลำดับ ขั้นตอนย่อยสามารถรับอาร์กิวเมนต์ได้ แต่ไม่สามารถส่งคืนค่าได้ ขั้นตอนย่อยอาจจะหรืออาจจะไม่รับข้อมูลเข้าก็ได้

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

เพียงแค่เขียนโค้ดนี้จะไม่แสดงผลอะไรเลย ที่นี่คุณได้สร้างขั้นตอนย่อยชื่อ outputMessage ต่อไปคุณต้องเรียกมัน

โทรออกข้อความ ()

รวมรหัสทั้งสองชุดนี้ไว้ข้างใน tag like this.

<script type="text/vbscript">

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

ผลลัพธ์ของโค้ดนี้จะเป็น

ขั้นตอนย่อย

ฟังก์ชั่น VBScript

หากคุณต้องการดำเนินการชุดคำสั่งและส่งกลับค่า คุณจะต้องใช้โพรซีเดอร์ของฟังก์ชัน หรือที่เรียกกันทั่วไปว่าฟังก์ชัน

ขั้นตอนการทำงานเริ่มต้นและสิ้นสุดด้วยคำสั่ง Function และ End Function ตามลำดับ

ขั้นตอนการทำงานอาจรับอินพุตหรือไม่ก็ได้

ขั้นตอนการทำงานของฟังก์ชันส่งคืนค่าโดยการกำหนดค่าให้กับชื่อ

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

ผลลัพธ์ของโค้ดนี้จะเป็น

ฟังก์ชั่น VBScript

พารามิเตอร์ ByRef และ ByVal

คุณสามารถส่งผ่านอาร์กิวเมนต์ VBScript ไปยังขั้นตอนโดยการอ้างอิงหรือตามค่า

หากคุณไม่ได้ระบุสิ่งใดเมื่อคุณเรียกใช้โพรซีเดอร์ อาร์กิวเมนต์/อาร์กิวเมนต์จะถูกส่งผ่านโดยการอ้างอิงตามค่าเริ่มต้น

หากคุณเปลี่ยนแปลงอาร์กิวเมนต์ให้คงอยู่แม้หลังจากเรียกใช้โพรซีเดอร์แล้ว คุณจะต้องส่งอาร์กิวเมนต์ VBScript โดยการอ้างอิง

เมื่ออาร์กิวเมนต์ถูกส่งผ่านตามค่า การเปลี่ยนแปลงใดๆ ที่กระบวนงานที่เรียกทำกับค่าของ ตัวแปร อย่าคงอยู่หลังจากเรียกโพรซีเดอร์แล้ว

คำสำคัญ ByRef และ ByVal ใช้เพื่อส่งผ่านอาร์กิวเมนต์โดยการอ้างอิงและตามค่าตามลำดับ

เพื่อทำความเข้าใจความแตกต่าง ขั้นแรกให้รันโค้ดด้านล่างและดูผลลัพธ์

ขั้นตอน 1) คัดลอกโค้ดลงในโปรแกรมแก้ไขของคุณ

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

ขั้นตอน 2) เอาต์พุตคือ 6

ขั้นตอน 3) เปลี่ยนฟังก์ชัน returnResult (ค่า ByRef) เป็นฟังก์ชัน returnResult (ค่า ByVal)

ขั้นตอน 4) ตอนนี้ผลลัพธ์ของคุณจะเป็น 5

คำถามที่พบบ่อย

ใช้คำสั่ง Exit Sub ภายใน Sub หรือ Exit Function ภายใน Function เพื่อออกจากขั้นตอนการทำงานก่อนสิ้นสุดทันที การทำงานจะกลับไปยังบรรทัดที่เรียกใช้คำสั่งนั้น

หากคุณใช้คีย์เวิร์ด `call` ให้ใส่เครื่องหมายวงเล็บครอบอาร์กิวเมนต์ แต่ถ้าคุณไม่ใช้ `call` ไม่ต้องใช้เครื่องหมายวงเล็บครอบอาร์กิวเมนต์หลายตัว การทำผิดพลาดตรงนี้เป็นข้อผิดพลาดทางไวยากรณ์ VBScript ที่พบบ่อย

ใช่แล้ว ฟังก์ชันหรือซับรูทีนใน VBScript สามารถเรียกตัวเองได้ ซึ่งเรียกว่าการเรียกซ้ำ (recursion) ควรใส่เงื่อนไขพื้นฐานเพื่อหยุดการเรียกซ้ำเสมอ มิเช่นนั้นสคริปต์จะวนลูปไปเรื่อยๆ จนกว่าพื้นที่สแต็กจะหมด

ใช่ AI สามารถตรวจจับข้อความที่ซ้ำกันได้ เช่นtracนำโค้ดเหล่านั้นไปใส่ใน Sub หรือ Function โดยใช้พารามิเตอร์ที่ถูกต้อง แล้วอัปเดตการเรียกใช้ วิธีนี้จะทำให้สคริปต์สั้นลงและดูแลรักษาง่ายขึ้น

ใช่ AI สามารถทำได้ tracอธิบายว่าค่าเปลี่ยนแปลงอย่างไรเมื่อใช้ ByRef เทียบกับ ByVal แสดงผลลัพธ์ของแต่ละวิธี และแนะนำว่าควรใช้วิธีใดโดยพิจารณาจากว่าผู้เรียกควรเห็นการเปลี่ยนแปลงหรือไม่

สรุปโพสต์นี้ด้วย: