# camelcase

强制执行驼峰命名约定

在命名变量时,样式指南通常属于两个阵营之一:驼峰式(variableName)和下划线(variable_name)。该规则侧重于使用驼峰法。如果您的风格指南要求对变量名进行驼峰式命名,那么这条规则适合您!

# 规则详情

此规则查找位于源代码中的任何下划线 (_)。它忽略前导和尾随下划线,只检查变量名中间的下划线。如果 ESLint 确定变量是常量(全部大写),则不会抛出警告。否则,将引发警告。此规则仅标记定义和分配,但不标记函数调用。在 ES6 import 语句的情况下,此规则仅针对将导入本地模块范围的变量的名称。

# 选项

此规则有一个对象选项:

  • "properties": "always"(默认)对属性名称强制执行驼峰式样式
  • "properties": "never" 不检查属性名称
  • "ignoreDestructuring": false(默认)对解构标识符强制执行驼峰式风格
  • "ignoreDestructuring": true 不检查解构标识符(但仍会检查代码后面对这些标识符的任何使用)
  • "ignoreImports": false(默认)为 ES2015 导入强制执行驼峰样式
  • "ignoreImports": true 不检查 ES2015 导入(但仍会检查代码后面对导入的任何使用,函数参数除外)
  • "ignoreGlobals": false(默认)对全局变量强制执行驼峰式风格
  • "ignoreGlobals": true 不对全局变量强制执行驼峰式风格
  • allow (string[]) 要接受的属性列表。接受正则表达式。

# properties: "always"

此规则使用默认 { "properties": "always" } 选项的错误代码示例:

/*eslint camelcase: "error"*/

import { no_camelcased } from "external-module"

var my_favorite_color = "#112C85";

function do_something() {
    // ...
}

obj.do_something = function() {
    // ...
};

function foo({ no_camelcased }) {
    // ...
};

function foo({ isCamelcased: no_camelcased }) {
    // ...
}

function foo({ no_camelcased = 'default value' }) {
    // ...
};

var obj = {
    my_pref: 1
};

var { category_id = 1 } = query;

var { foo: no_camelcased } = bar;

var { foo: bar_baz = 1 } = quz;

此规则使用默认 { "properties": "always" } 选项的正确代码示例:

/*eslint camelcase: "error"*/

import { no_camelcased as camelCased } from "external-module";

var myFavoriteColor   = "#112C85";
var _myFavoriteColor  = "#112C85";
var myFavoriteColor_  = "#112C85";
var MY_FAVORITE_COLOR = "#112C85";
var foo = bar.baz_boom;
var foo = { qux: bar.baz_boom };

obj.do_something();
do_something();
new do_something();

var { category_id: category } = query;

function foo({ isCamelCased }) {
    // ...
};

function foo({ isCamelCased: isAlsoCamelCased }) {
    // ...
}

function foo({ isCamelCased = 'default value' }) {
    // ...
};

var { categoryId = 1 } = query;

var { foo: isCamelCased } = bar;

var { foo: isCamelCased = 1 } = quz;

# properties: "never"

此规则使用 { "properties": "never" } 选项的正确代码示例:

/*eslint camelcase: ["error", {properties: "never"}]*/

var obj = {
    my_pref: 1
};

# ignoreDestructuring: false

此规则使用默认 { "ignoreDestructuring": false } 选项的错误代码示例:

/*eslint camelcase: "error"*/

var { category_id } = query;

var { category_id = 1 } = query;

var { category_id: category_id } = query;

var { category_id: category_alias } = query;

var { category_id: categoryId, ...other_props } = query;

# ignoreDestructuring: true

此规则使用 { "ignoreDestructuring": true } 选项的错误代码示例:

/*eslint camelcase: ["error", {ignoreDestructuring: true}]*/

var { category_id: category_alias } = query;

var { category_id, ...other_props } = query;

此规则使用 { "ignoreDestructuring": true } 选项的正确代码示例:

/*eslint camelcase: ["error", {ignoreDestructuring: true}]*/

var { category_id } = query;

var { category_id = 1 } = query;

var { category_id: category_id } = query;

请注意,此选项仅适用于解构模式内的标识符。除了默认或其他选项已经允许的使用之外,它还不允许在代码后面对创建的变量进行任何特定使用。

带有 { "ignoreDestructuring": true } 选项的此规则的其他错误代码示例:

/*eslint camelcase: ["error", {ignoreDestructuring: true}]*/

var { some_property } = obj; // allowed by {ignoreDestructuring: true}
var foo = some_property + 1; // error, ignoreDestructuring does not apply to this statement

此选项的一个常见用例是避免在以后不打算在代码中使用标识符时进行无用的重命名。

此规则使用 { "ignoreDestructuring": true } 选项的其他正确代码示例:

/*eslint camelcase: ["error", {ignoreDestructuring: true}]*/

var { some_property, ...rest } = obj;
// do something with 'rest', nothing with 'some_property'

此选项的另一个常见用例是与 { "properties": "never" } 结合使用,此时标识符仅用作属性简写。

此规则使用 { "properties": "never", "ignoreDestructuring": true } 选项的其他正确代码示例:

/*eslint camelcase: ["error", {"properties": "never", ignoreDestructuring: true}]*/

var { some_property } = obj;
doSomething({ some_property });

# ignoreImports: false

此规则使用默认 { "ignoreImports": false } 选项的错误代码示例:

/*eslint camelcase: "error"*/

import { snake_cased } from 'mod';

# ignoreImports: true

此规则使用 { "ignoreImports": true } 选项的错误代码示例:

/*eslint camelcase: ["error", {ignoreImports: true}]*/

import default_import from 'mod';

import * as namespaced_import from 'mod';

此规则使用 { "ignoreImports": true } 选项的正确代码示例:

/*eslint camelcase: ["error", {ignoreImports: true}]*/

import { snake_cased } from 'mod';

# ignoreGlobals: false

此规则使用默认 { "ignoreGlobals": false } 选项的错误代码示例:

/*eslint camelcase: ["error", {ignoreGlobals: false}]*/
/* global no_camelcased */

const foo = no_camelcased;

# ignoreGlobals: true

此规则使用 { "ignoreGlobals": true } 选项的正确代码示例:

/*eslint camelcase: ["error", {ignoreGlobals: true}]*/
/* global no_camelcased */

const foo = no_camelcased;

# allow

此规则使用 allow 选项的正确代码示例:

/*eslint camelcase: ["error", {allow: ["UNSAFE_componentWillMount"]}]*/

function UNSAFE_componentWillMount() {
    // ...
}
/*eslint camelcase: ["error", {allow: ["^UNSAFE_"]}]*/

function UNSAFE_componentWillMount() {
    // ...
}

function UNSAFE_componentWillMount() {
    // ...
}

# 何时不使用

如果您使用不同的命名约定(用下划线分隔单词)建立了编码标准,请关闭此规则。

Last Updated: 5/13/2023, 8:55:38 PM