确定单词是否为保留的Javascript标识符

时间:2013-04-22 22:11:00

标签: javascript keyword reserved-words

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

2 个答案:

答案 0 :(得分:4)

一种选择是:

var reservedWord = false;
try {
  eval('var ' + wordToCheck + ' = 1');
} catch {
  reservedWord = true;
}

唯一的问题是,这会对无效变量名但不是保留字的单词给出误报。

正如评论中所指出的,这可能存在安全风险。

答案 1 :(得分:1)

我猜你可以使用eval来解决它,但这看起来像是一种黑客攻击。我会去检查所有保留字。像这样:

var reservedWords = [
    'break',
    'case',
    ...
];

function isReservedWord(str) {
    return !!~reservedWords.indexOf(str);
}

以下是所有保留字的列表:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Reserved_Words

此外,eval方法的一个问题是某些浏览器有时允许您使用一些保留字作为标识符。