Javascript 获取includes不是一个意外的函数

Javascript 获取includes不是一个意外的函数,javascript,Javascript,我想检查麦克风是否已连接,我们可以像这样录制音频: //检查麦克风 navigator.mediaDevices.getUserMedia({audio:true}) 。然后(流=>{ //如果麦克风可用,则编码 console.log(“麦克风工作”); }).catch(错误=>{ console.log(错误) 如果(错误包括(“未找到请求的设备”)){ console.log(“未连接麦克风”); }else if(错误包括(“权限被拒绝”)){ log('用户拒绝记录权限'); }否

我想检查麦克风是否已连接,我们可以像这样录制音频:

//检查麦克风
navigator.mediaDevices.getUserMedia({audio:true})
。然后(流=>{
//如果麦克风可用,则编码
console.log(“麦克风工作”);
}).catch(错误=>{
console.log(错误)
如果(错误包括(“未找到请求的设备”)){
console.log(“未连接麦克风”);
}else if(错误包括(“权限被拒绝”)){
log('用户拒绝记录权限');
}否则{
}     

});如果err是
未定义的
,您将得到一个TypeError。检查其是否存在,如:


if(err&&err.includes(“未找到请求的设备”){}

这是因为
err
实际上是一个对象,而对象没有原型
includes
。检查错误类型的推荐方法是实际检查
err.name

  • abortorror
  • NotAllowedError
  • NotFoundError
  • NotReadableError
  • 过度约束错误
  • SecurityError
  • TypeError
//检查麦克风
navigator.mediaDevices.getUserMedia({audio:true})
。然后(流=>{
//如果麦克风可用,则编码
console.log(“麦克风工作”);
}).catch(错误=>{
开关(错误名称){
案例“NotFoundError”:
console.log(“未连接麦克风”);
打破
案例“NotAllowedError”:
log('用户拒绝记录权限');
打破
}

});
err
不会是
未定义的
我的错我没意识到它不是
字符串
谢谢。。。您是否建议只勾选
==
而不勾选
包含的内容
。似乎消息总是精确的文本…@foxer我已经更新了我的答案:检查
err.name
,实际上更安全,因为这在不同浏览器中是一致的。消息本身可能因浏览器而异。