JS函数参数的实用技巧,让家庭网络设备配置更高效

家里装了智能路由器、摄像头、温控器,想用网页做个简单的控制面板?写点JavaScript是免不了的。很多人卡在第一步:函数怎么传参才灵活又省事。

函数参数不是只能传数字和文字

比如你有个函数要设置Wi-Fi名称和密码,最基础的写法是这样:

function setWifi(name, password) {
  console.log('网络名称:' + name);
  console.log('密码:' + password);
}

setWifi('MyHomeNet', '12345678');

看着没问题,但要是以后还想加隐藏网络、频段选择这些选项,参数越堆越多,调用时容易搞混顺序。

用对象传参,配置更清晰

换成传一个对象,参数再多也不怕乱:

function setWifi(config) {
  console.log('网络名称:' + config.name);
  console.log('密码:' + config.password);
  console.log('是否隐藏:' + (config.hidden ? '是' : '否'));
}

setWifi({
  name: 'MyHomeNet',
  password: '12345678',
  hidden: true
});

这样一目了然,改配置的时候也不用数参数位置。

默认值让常用设置更省事

大多数时候你可能都不需要隐藏网络,那就给它设个默认值:

function setWifi({ name, password, hidden = false }) {
  console.log('网络名称:' + name);
  console.log('密码:' + password);
  console.log('是否隐藏:' + (hidden ? '是' : '否'));
}

// 调用时可以不写 hidden
setWifi({
  name: 'LivingRoomCam',
  password: 'abcd1234'
});

这样日常使用少打几个字,关键设置还不会丢。

还能再简化?试试解构参数

函数内部不用反复写 config.xxx,直接在参数里解构:

function setWifi({ name, password, hidden = false, band = '2.4G' }) {
  console.log(`连接到 ${band} 频段`);
  console.log(`网络名称:${name}`);
  console.log(`是否隐藏:${hidden ? '是' : '否'}`);
}

连默认频段都预设好,调用时想改就改,不想管就用默认,特别适合家里老人操作的界面。

动态设备管理靠剩余参数

假如你要批量重启家里的智能设备,数量不固定,可以用剩余参数:

function rebootDevices(...devices) {
  devices.forEach(device => {
    console.log(`${device} 正在重启...`);
  });
}

rebootDevices('客厅灯', '门铃摄像头', '厨房插座');

来一个处理一个,来十个也一样办。

写家庭自动化小工具时,别小看函数参数的设计。用对方式,代码看着清爽,改起来也快,下次路由器固件更新要加新功能,自己动手一点都不难。