บางภาษา - เช่น Ruby, CoffeeScript และรุ่น JavaScript ที่กำลังจะมาถึง - สามารถประกาศพารามิเตอร์เริ่มต้นเมื่อกำหนดฟังก์ชันเช่นนี้:
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น myfunc (param1, param2 = "สตริงที่สอง") {
console.log (param1, param2);
-
// outputs: "สตริงแรก" และ "สตริงที่สอง"
myfunc ("สตริงแรก");
// outputs: "สตริงแรก" และ "สตริงที่สองเวอร์ชัน 2"
myfunc ("สตริงแรก", "สตริงที่สองเวอร์ชัน 2");
น่าเสียดายที่ในเวอร์ชัน JavaScript ปัจจุบันการเขียนนี้ไม่ถูกต้อง ดังนั้นเราจะทำอย่างไรในการใช้วิธีนี้โดยใช้ชุดเครื่องมือที่มีอยู่ของเรา
ทางออกที่ง่ายที่สุดเป็นเช่นนี้:
การคัดลอกรหัสมีดังนี้:
ฟังก์ชัน myfunc (param1, param2) {
if (param2 === ไม่ได้กำหนด) {
param2 = "สตริงที่สอง";
-
console.log (param1, param2);
-
// outputs: "สตริงแรก" และ "สตริงที่สองเวอร์ชัน 2"
myfunc ("สตริงแรก", "สตริงที่สองเวอร์ชัน 2");
ความจริงก็คือพารามิเตอร์ที่ถูกละเว้นจะ "ไม่ได้กำหนด" เสมอเมื่อเข้าถึง หากคุณมีพารามิเตอร์เดียวนี่เป็นทางออกที่ดีจะเกิดอะไรขึ้นถ้ามีหลายตัวในเวลานั้น?
หากคุณมีพารามิเตอร์มากกว่าหนึ่งพารามิเตอร์คุณสามารถใช้วัตถุเป็นพารามิเตอร์ซึ่งมีข้อได้เปรียบที่แต่ละพารามิเตอร์มีการตั้งชื่อที่ชัดเจน หากคุณผ่านพารามิเตอร์วัตถุคุณสามารถประกาศค่าเริ่มต้นในลักษณะเดียวกัน
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น myfunc (paramobject) {
var defaultParams = {
param1: "สตริงแรก"
param2: "สตริงที่สอง"
param3: "สตริงที่สาม"
-
var finalparams = defaultparams;
// เราวนซ้ำคุณสมบัติแต่ละตัวของ paramobject
สำหรับ (คีย์ var ใน paramoBject) {
// หากทรัพย์สินปัจจุบันไม่ได้รับการสืบทอดดำเนินการต่อไป
if (paramobject.hasownproperty (คีย์)) {
// หากมีการกำหนดคุณสมบัติปัจจุบัน
// เพิ่มลงใน FinalParams
if (paramobject [key]! == undefined) {
FinalParams [key] = paramobject [key];
-
-
-
console.log (finalparams.param1,
FinalParams.param2,
FinalParams.param3);
-
myfunc ({param1: "สตริงของฉันเอง"});
นี่ค่อนข้างซุ่มซ่าม หากคุณใช้วิธีนี้มากคุณสามารถเขียนฟังก์ชั่นการห่อหุ้ม โชคดีที่ห้องสมุดหลายแห่งมีวิธีการที่เกี่ยวข้องเช่นวิธีขยายใน jQuery และขีดเส้นใต้
ต่อไปนี้ใช้วิธีการขยายของขีดเส้นใต้เพื่อให้ได้ผลลัพธ์เดียวกันข้างต้น:
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น myfunc (paramobject) {
var defaultParams = {
param1: "สตริงแรก"
param2: "สตริงที่สอง"
param3: "สตริงที่สาม"
-
var finalparams = _.extend (defaultParams, paramobject);
console.log (finalparams.param1,
FinalParams.param2,
FinalParams.param3);
-
// เอาต์พุต:
// "สตริงของฉันเอง" และ "สตริงที่สอง" และ "สตริงที่สาม"
myfunc ({param1: "สตริงของฉันเอง"});
นี่คือวิธีที่คุณจะได้รับพารามิเตอร์เริ่มต้นในเวอร์ชัน JavaScript ปัจจุบัน
ยินดีต้อนรับการวิจารณ์และการแก้ไขแง่มุมที่ไม่เหมาะสมในบทความยินดีต้อนรับ