Pernahkah anda menghadapi situasi sedemikian dan menulis fungsi tanpa parameter?
function showUserInfo(){ alert("你好!我是小明。"); } function showUserInfo(){ alert("你好!我是小明。"); }
Panggil:
showUserInfo(); showUserInfo();
Kemudian, saya mendapati bahawa fungsi ini juga diperlukan di tempat lain, tetapi beberapa nilai pembolehubah telah dikodkan dengan keras dalam fungsi tersebut. Tambah parameter.
function showUserInfo(name){ name=name||"小明"; alert("你好!我是"+name+"。"); } function showUserInfo(name){ name=name||"小明"; alert("你好!我是"+name+"。"); }
Penjelasan: name=name||"Xiao Ming" Kod ini bermakna jika nama adalah batal, ia sama dengan nilai lalai "Xiao Ming". Anda juga boleh menulis seperti ini:
function showUserInfo(name){ // name=name||"小明"; if(!name){ name="小明"; } alert("你好!我是"+name+"。"); } function showUserInfo(name){ // name=name||"小明"; if(!name){ name="小明"; } alert("你好!我是"+name+"。"); }
Panggil:
showUserInfo('小李'); showUserInfo('小李');
Kemudian, keperluan berubah dan umur perlu ditambah. Okey, mari tukar:
function showUserInfo(name,age){ name=name||"小明"; age=age||22; alert("你好!我是"+name+",今年"+age+"岁。"); } function showUserInfo(name,age){ name=name||"小明"; age=age||22; alert("你好!我是"+name+",今年"+age+"岁。"); }
Panggil:
showUserInfo('小李');//结果:你好!我是小李,今年22岁。 showUserInfo('小李',19);//结果:你好!我是小李,今年19岁。 showUserInfo(null,19);//结果:你好!我是小明,今年19岁。 showUserInfo('小李');//结果:你好!我是小李,今年22岁。 showUserInfo('小李',19);//结果:你好!我是小李,今年19岁。 showUserInfo(null,19);//结果:你好!我是小明,今年19岁。
Baiklah, bagaimana jika kita perlu menambah parameter seperti hari lahir, nombor telefon, jantina, QQ, dsb.? Tetapkan nilai lalai satu demi satu? Malah, saya melihat ramai orang melakukan ini. Mari kita lihat cara yang lebih mudah. Iaitu menggunakan sambungan Jquery. Mari lihat kod dahulu:
function showUserInfo(setting){ var defaultSetting={ name:"小明", age:"22", sex:"男", phone:"13888888888", QQ:"12345678", birthday:"1980.12.29" }; $.extend(defaultSetting,settings); var message='姓名:'+defaultSetting.name +',性别:'+defaultSetting.sex +',年龄:'+defaultSetting.age +',电话:'+defaultSetting.phone +',QQ:'+defaultSetting.QQ +',生日:'+defaultSetting.birthday +'。'; alert(message); } function showUserInfo(setting){ var defaultSetting={ name:"小明", age:"22", sex:"男", phone:"13888888888", QQ:"12345678", birthday:"1980.12.29" }; $.extend(defaultSetting,settings); var message='姓名:'+defaultSetting.name +',性别:'+defaultSetting.sex +',年龄:'+defaultSetting.age +',电话:'+defaultSetting.phone +',QQ:'+defaultSetting.QQ +',生日:'+defaultSetting.birthday +'。'; alert(message); }
Penjelasan: Fungsi $.extend(defaultSetting,settings) adalah untuk menggabungkan konfigurasi tetapan masuk dengan defaultSetting, dan menulis ganti konfigurasi defaultSetting dengan konfigurasi dalam tetapan.
Panggil:
showUserInfo({ name:"小李" }); //结果:姓名:小李,性别:男,年龄:22,电话:13888888888,QQ:12345678,生日:1980.12.29。 showUserInfo({ name:"小红", sex:"女", phone:"13777777777" }); //结果:姓名:小红,性别:女,年龄:22,电话:13777777777,QQ:12345678,生日:1980.12.29。 showUserInfo({ name:"小李" }); //结果:姓名:小李,性别:男,年龄:22,电话:13888888888,QQ:12345678,生日:1980.12.29。 showUserInfo({ name:"小红", sex:"女", phone:"13777777777" }); //结果:姓名:小红,性别:女,年龄:22,电话:13777777777,QQ:12345678,生日:1980.12.29。
Ia sangat mudah! Dengan cara ini, walaupun terdapat 100 parameter, anda tidak takut.
Jadi bila hendak menggunakan berbilang parameter dan bila hendak menggunakan objek parameter tersebut? Pengalaman saya ialah, bergantung kepada keperluan sebenar, jika satu atau dua parameter boleh digunakan, maka objek parameter tidak digunakan. Jika terdapat lebih daripada 3, saya akan menggunakan objek parameter ini.