javascript - 如何查看浏览器是否支持 'let'?

标签 javascript html

检查我的浏览器是否支持 let 命令以声明仅对当前代码块有效的变量的最佳方法是什么?

这不是问题 What browsers currently support JavaScript's 'let' keyword? 的重复因为题中提到了FF中的非标准语法扩展,eval/Function的解法没有贴出来。

我需要执行此检查以将使用旧浏览器的用户重定向到建议他们更新浏览器的网站。

最佳答案

特征检测新语法或关键字的唯一方法是 eval它(或者,将它传递给不太好的 Function constructor ):

function detectLet(){
  try{
    return !!new Function('let x=true;return x')()
  }catch(e){
    return false
  }
}

console.log(detectLet())

但还要注意,您不能有条件地使用新语法,或 try catch 语法错误,因为语法错误在您的代码开始运行之前发生!

因此,要有条件地使用这样的功能,您还需要 eval,这更糟糕...

if(detectLet()){
  let foo = 'bar';
}
//SyntaxError if `let` isn't supported
if(detectLet()){
  eval("let foo = 'bar';") //Wait... really?!
}
//No errors

结论:

如果您需要支持不支持 let 的(那些非常古老的)平台,那么不要使用 let

或者,您可以使用 Babel 等工具转译您的代码

但截至 2022 年,all major browsers support let (even IE!!!) ,因此您可以安全地使用它,并放弃对真正旧版浏览器的支持。

关于javascript - 如何查看浏览器是否支持 'let'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58063969/

相关文章:

javascript - Web应用程序的移动应用程序(离线存储)

javascript - 将 html 表格导出为 PDF 并保留表格外观

javascript - 文本选择跳转到顶部

ajax - 在AJAX聊天中播放声音

html - 悬停时在页面宽度上拉伸(stretch)子导航栏

javascript - 将 javascript map 合并到 Angular 中

javascript - ReactJS 中的多语言网站

javascript - 为什么我的 HTML POST 请求表单没有通过 Express app.post?如何将数字变量传递给另一个 POST 请求?

javascript - parse.com 引用错误 : user is not defined

html - 始终在包含潜水的同一位置显示工具提示