检查我的浏览器是否支持 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/