确定一个词是否是保留的 Javascript 标识符

GOT*_*O 0 1 javascript reserved-words keyword

是否有可能在Javascript中,以确定是否某些字符串是保留语言的关键字,例如switchiffunction等?我想要做的是在动态生成的代码中以一种不会破坏浏览器特定扩展的方式转义保留标识符。我想到的唯一想法是eval在 try-catch 块中使用并检查语法错误。不知道如何做到这一点。有任何想法吗?

Jon*_*nah 6

一种选择是这样做:

var reservedWord = false;
try {
  eval('var ' + wordToCheck + ' = 1');
} catch {
  reservedWord = true;
}
Run Code Online (Sandbox Code Playgroud)

唯一的问题是这会对无效变量名但不是保留字的词产生误报。

正如评论中所指出的,这可能是一个安全风险。

  • 这是一个潜在的安全整体。 (4认同)
  • 怎么样`eval('(function(' + wordToCheck + '){})')`。这不会污染当前范围(想象一下`wordToCheck=='reservedWord'`...)。另外,为了避免安全问题,只需添加一个像 `/^[az]+$/i.test(wordToCheck)` 这样的测试 (3认同)