consistent-return (Rules) – Eslint 中文开发手册

作者: Arvin Chen 分类: JavaScript 来源: Break易站(www.breakyizhan.com)
  •   Eslint 中文开发手册

    consistent-return (Rules) - Eslint 中文开发手册

    与强制函数返回指定类型的值的静态类型语言不同,JavaScript 允许函数中的不同代码路径返回不同类型的值。

    JavaScript 的一个令人困惑的方面是,undefined如果满足以下任一条件,函数将返回:

    return在退出之前不执行语句它执行时return没有明确指定一个值它执行 return undefined 它执行return void后跟一个表达式(例如,一个函数调用)它执行return之后是任何其他表达式,评估为undefined

    如果某个函数中的任何代码路径显式返回一个值,但某些代码路径不会显式返回值,则可能是输入错误,特别是在大型函数中。在以下示例中:

    通过该函数的代码路径返回一个 Boolean 值 true 另一个代码路径不显式返回值,因此隐式返回undefined

    function doSomething(condition) {
        if (condition) {
            return true;
        } else {
            return;
        }
    }

    规则细节

    规则要求return语句总是或永远不指定值。此规则忽略名称以大写字母开头的函数定义,因为构造函数(当用new运算符调用时)隐式返回实例化对象,如果它们不显式返回另一个对象。

    规则的错误代码示例:

    /*eslint consistent-return: "error"*/
    
    function doSomething(condition) {
        if (condition) {
            return true;
        } else {
            return;
        }
    }
    
    function doSomething(condition) {
        if (condition) {
            return true;
        }
    }

    规则的正确代码示例:

    /*eslint consistent-return: "error"*/
    
    function doSomething(condition) {
        if (condition) {
            return true;
        } else {
            return false;
        }
    }
    
    function Foo() {
        if (!(this instanceof Foo)) {
            return new Foo();
        }
    
        this.a = 0;
    }

    选项

    规则有一个对象选项:

    "treatUndefinedAsUnspecified": false(默认)总是指定值或仅隐式返回undefined。"treatUndefinedAsUnspecified": true总是指定值或undefined显式或隐式返回。

    treatUndefinedAsUnspecified

    { "treatUndefinedAsUnspecified": false }规则的默认代码错误代码示例:

    /*eslint consistent-return: ["error", { "treatUndefinedAsUnspecified": false }]*/
    
    function foo(callback) {
        if (callback) {
            return void callback();
        }
        // no return statement
    }
    
    function bar(condition) {
        if (condition) {
            return undefined;
        }
        // no return statement
    }

    { "treatUndefinedAsUnspecified": true }规则的错误代码示例包含以下选项:

    /*eslint consistent-return: ["error", { "treatUndefinedAsUnspecified": true }]*/
    
    function foo(callback) {
        if (callback) {
            return void callback();
        }
        return true;
    }
    
    function bar(condition) {
        if (condition) {
            return undefined;
        }
        return true;
    }

    { "treatUndefinedAsUnspecified": true }规则的正确代码示例包含以下选项:

    /*eslint consistent-return: ["error", { "treatUndefinedAsUnspecified": true }]*/
    
    function foo(callback) {
        if (callback) {
            return void callback();
        }
        // no return statement
    }
    
    function bar(condition) {
        if (condition) {
            return undefined;
        }
        // no return statement
    }

    何时不使用它

    如果您想允许函数return根据代码分支具有不同的行为,那么禁用此规则是安全的。

    版本

    规则是在ESLint 0.4.0中引入的。

    资源

    Rule sourceDocumentation source

  •   Eslint 中文开发手册
  •   本文标题:consistent-return (Rules) – Eslint 中文开发手册 - Break易站
    转载请保留页面地址:https://www.breakyizhan.com/javascript/34114.html
      微信返利机器人
      免费:淘宝,京东,拼多多优惠券
      腾讯,爱奇艺,优酷的VIP视频免费解析,免费看
      即刻扫描二维码,添加微信机器人!

    发表笔记

    电子邮件地址不会被公开。 必填项已用*标注