no-restricted-syntax
禁止指定语法(无限制语法)
JavaScript 有很多语言特性,并不是每个人都喜欢它们。因此,有些项目选择完全禁止使用某些语言功能。例如,您可能决定不允许使用try-catch
或class
,或者您可能决定不允许使用该in
操作员。
此规则可让您配置要限制使用的语法元素,而不是为要关闭的每种语言功能创建单独的规则。这些元素由其 ESTree 节点类型表示。例如,函数声明由表示,FunctionDeclaration
并且with
语句由表示WithStatement
。您可以 在GitHub上找到 您可以使用的 AST 节点名称的完整列表,并使用 联机解析器 查看您的代码由哪些类型的节点组成。
您还可以指定 AST选择器 进行限制,从而更精确地控制语法模式。
规则细节
此规则不允许指定(即用户定义)语法。
选项
这条规则接受一个字符串列表,其中每个字符串都是一个 AST 选择器:
{
"rules": {
"no-restricted-syntax": ["error", "FunctionExpression", "WithStatement", "BinaryExpression[operator='in']"]
}
}
或者,该规则还接受对象,其中指定了选择器和可选自定义消息:
{
"rules": {
"no-restricted-syntax": [
"error",
{
"selector": "FunctionExpression",
"message": "Function expressions are not allowed."
},
{
"selector": "CallExpression[callee.name='setTimeout'][arguments.length!=2]",
"message": "setTimeout must always be invoked with two arguments."
}
]
}
}
如果使用该message
属性指定了自定义消息,则 ESLint 将在报告selector
属性中指定的语法出现时使用该消息。
字符串和对象格式可以根据需要在配置中自由混合。
此规则的代码错误
代码示例"FunctionExpression", "WithStatement", BinaryExpression[operator='in']
如下:
/* eslint no-restricted-syntax: ["error", "FunctionExpression", "WithStatement", "BinaryExpression[operator='in']"] */
with (me) {
dontMess(
}
var doSomething = function () {};
foo in bar;
此规则的正确
代码示例包含以下"FunctionExpression", "WithStatement", BinaryExpression[operator='in']
选项:
/* eslint no-restricted-syntax: ["error", "FunctionExpression", "WithStatement", "BinaryExpression[operator='in']"] */
me.dontMess(
function doSomething() {};
foo instanceof bar;
何时不使用它
如果您不想限制您的代码使用任何 JavaScript 功能或语法,则不应使用此规则。
相关规则
- no-alert
- no-console
- no-debugger
- no-restricted-properties
版本
该规则在 ESLint 1.4.0中引入。