no-restricted-syntax

禁止指定的语法

JavaScript 有很多语言特性,并不是每个人都喜欢。因此,一些项目选择完全禁止使用某些语言特性。例如,您可能决定禁止使用 try-catchclass,或者您可能决定禁止使用 in 运算符。

此规则允许您配置要限制使用的语法元素,而不是为您要关闭的每个语言功能创建单独的规则。这些元素由它们的 ESTree 节点类型表示。例如,函数声明用 FunctionDeclaration 表示,with 语句用 WithStatement 表示。您可以找到 AST 节点名称的完整列表,您可以使用 在 GitHub 上 并将 AST Explorer 与 espree 解析器一起使用,以查看您的代码包含哪些类型的节点。

您还可以指定 AST 选择器 进行限制,从而更精确地控制语法模式。

规则详情

此规则不允许指定的(即用户定义的)语法。

选项

ZAstCX3SMkWM1QYLArDIGpsN3DNIi0lPybWzN6Tc68RGGOOLsdjRxE+4xaxMggTS1vcoE8NUyevN9RBkItsWoCrJKXBquGY5B9TVLtUzZW96TNsb8XfYmWW4RcKKRG9W

{
    "rules": {
        "no-restricted-syntax": ["error", "FunctionExpression", "WithStatement", "BinaryExpression[operator='in']"]
    }
}

mDxRaUIoIgET3kuFnlSIJX/sRkckI2Tx83/37eTYYK5/fv2OkMFCcW1Yt79ti8VSlwpY04UbSG3A+1RuFfZ5IFqX2D7gLeEfg2Nq0xdHpZ2Q05awQpbXUSeL3IB6HsJe

{
    "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."
            }
        ]
    }
}

hbdJdivFfuTZzZ74PnA2qSa7R+J8aL7p6fXOJs9l72caBbR6mIdr+g/z+q3wiBGV/0zmnS7XBQCYwJrh+2iPbCTgrT7SncB4nS4xNUrW5zMYNi/ZbHo9WENEyhf7jLHwY8k1NFayHs9QW8g9r+YpOkzvThOc8FyZn7L1xgz/zsWu4SBju29Z3xZMz9PfLQ93Xr/SP8h+r+5Xu406DswwUjDvUOYl044Pkvp1C9fWcrQ=

WMWBZKAR92BOaXZHuLJ2qb/2fou/iTSVa7EBQxy/X3R3yR72oksE7hVQdUkeMgrfvUZXpi8AVBvBx+2vrjThsZcjWy3Rp6LiVJ/ku5IZEi4=

nQP82WYZJTVvhOZX4UTE6OmppdfVIeMIGp1V/jMuhVNeHlm2d7bZUa79vKCeKbOIJL49VhvitwsHMiRATY7mXmbTkdd/cJnKL6aji63vWW3r2mPe9DMon1nIpvQeOvxqH9UHllzdmB809cCx4emF/OBFN7/UaR/jpbqbLXI8sRnG1a+caJ6L3oXZbk3jakTU

/* eslint no-restricted-syntax: ["error", "FunctionExpression", "WithStatement", "BinaryExpression[operator='in']"] */

with (me) {
    dontMess();
}

var doSomething = function () {};

foo in bar;

nQP82WYZJTVvhOZX4UTE6OmppdfVIeMIGp1V/jMuhVNeHlm2d7bZUa79vKCeKbOIJL49VhvitwsHMiRATY7mXmbTkdd/cJnKL6aji63vWW3r2mPe9DMon1nIpvQeOvxqVguN6cSTkJAHlgIFwbnHwDswi5uRYVwzjp/wj+CpVumzbG6ETRgMVO2HN4mLL9MP

/* eslint no-restricted-syntax: ["error", "FunctionExpression", "WithStatement", "BinaryExpression[operator='in']"] */

me.dontMess();

function doSomething() {};

foo instanceof bar;

何时不使用

NcT2euPpAXMafYLFrTNmRhqjjJcpLtzm59hmHl0+03L8zbxGWHpsaTOYS22a2TGK/bXcpzLCtmfpLAhttm/Z/Tob13zlYMe48SqqYWwArSgiJNPQFzZEpQnnllagq3y42niQxcyDLszBXfRE1k1HAA==