ブラウザが現在のコードブロックに対してのみ有効な変数を宣言するletコマンドをサポートしているかどうかを確認する最良の方法は何ですか?
eval / Functionソリューションが投稿されていないため、これは質問2356830の重複ではありません。
古いブラウザを使用しているユーザーを、ブラウザの更新を勧めるサイトにリダイレクトするには、このチェックを実行する必要があります。
新しい構文またはキーワードを機能検出するeval
(またはFunction
コンストラクターに渡す)唯一の方法:
function detectLet(){
try{
return !!new Function('let x=true;return x')()
}catch(e){
return false
}
}
console.log(detectLet())
ただし、コードの実行が開始される前に構文エラーが発生するため、条件付きで新しい構文を使用したり、構文エラーをキャッチしようとしたりすることはできないことにも注意してください。
したがって、このような機能を条件付きで使用するeval
には、さらに悪いことも必要です...
if(detectLet()){
let foo='bar';
}
//SyntaxError if `let` isn't supported
if(detectLet()){
eval("let foo='bar';") //Wait... really?!
}
//No errors
結論:
あなたがサポートされない(これらの本当に古い)のプラットフォームをサポートする必要がある場合let
は、使用しないでくださいlet
。
ただし、2019年の時点では、すべての主要なブラウザーがサポートされているためlet
(IEも!!!)、安全に使用でき、レガシーブラウザーのサポートは終了します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加