func-name-matching
要求函數名稱與其賦值的變數或屬性的名稱相符
❄️ 已凍結
此規則目前已凍結,且不接受功能請求。
規則詳細資訊
此規則要求函數名稱與其賦值的變數或屬性的名稱相符。此規則將忽略屬性賦值,其中屬性名稱為字面值,且在您的設定中指定的 ECMAScript 版本(預設為 ES5)中不是有效的識別符。
此規則的錯誤程式碼範例
在遊樂場中開啟
/*eslint func-name-matching: "error"*/
var ;
;
;
;
var obj = {};
({});
class C {
}
在遊樂場中開啟
/*eslint func-name-matching: ["error", "never"] */
var ;
;
;
;
var obj = {};
({});
class C {
}
此規則的正確程式碼範例
在遊樂場中開啟
/*eslint func-name-matching: "error"*/
// equivalent to /*eslint func-name-matching: ["error", "always"]*/
var foo = function foo() {};
var foo = function() {};
var foo = () => {};
foo = function foo() {};
obj.foo = function foo() {};
obj['foo'] = function foo() {};
obj['foo//bar'] = function foo() {};
obj[foo] = function bar() {};
var obj = {foo: function foo() {}};
var obj = {[foo]: function bar() {}};
var obj = {'foo//bar': function foo() {}};
var obj = {foo: function() {}};
obj['x' + 2] = function bar(){};
var [ bar ] = [ function bar(){} ];
({[foo]: function bar() {}})
class C {
foo = function foo() {};
baz = function() {};
}
// private names are ignored
class D {
#foo = function foo() {};
#bar = function foo() {};
baz() {
this.#foo = function foo() {};
this.#foo = function bar() {};
}
}
module.exports = function foo(name) {};
module['exports'] = function foo(name) {};
在遊樂場中開啟
/*eslint func-name-matching: ["error", "never"] */
var foo = function bar() {};
var foo = function() {};
var foo = () => {};
foo = function bar() {};
obj.foo = function bar() {};
obj['foo'] = function bar() {};
obj['foo//bar'] = function foo() {};
obj[foo] = function foo() {};
var obj = {foo: function bar() {}};
var obj = {[foo]: function foo() {}};
var obj = {'foo//bar': function foo() {}};
var obj = {foo: function() {}};
obj['x' + 2] = function bar(){};
var [ bar ] = [ function bar(){} ];
({[foo]: function bar() {}})
class C {
foo = function bar() {};
baz = function() {};
}
// private names are ignored
class D {
#foo = function foo() {};
#bar = function foo() {};
baz() {
this.#foo = function foo() {};
this.#foo = function bar() {};
}
}
module.exports = function foo(name) {};
module['exports'] = function foo(name) {};
選項
此規則接受一個可選的字串 "always"
或 "never"
(省略時,預設為 "always"
),以及一個具有兩個屬性 considerPropertyDescriptor
和 includeCommonJSModuleExports
的可選選項物件。
considerPropertyDescriptor
一個布林值,預設為 false
。如果 considerPropertyDescriptor
設定為 true,則檢查將會考慮到 Object.create
、Object.defineProperty
、Object.defineProperties
和 Reflect.defineProperty
的使用。
{ considerPropertyDescriptor: true }
選項的正確程式碼範例
在遊樂場中開啟
/*eslint func-name-matching: ["error", { "considerPropertyDescriptor": true }]*/
// equivalent to /*eslint func-name-matching: ["error", "always", { "considerPropertyDescriptor": true }]*/
var obj = {};
Object.create(obj, {foo:{value: function foo() {}}});
Object.defineProperty(obj, 'bar', {value: function bar() {}});
Object.defineProperties(obj, {baz:{value: function baz() {} }});
Reflect.defineProperty(obj, 'foo', {value: function foo() {}});
{ considerPropertyDescriptor: true }
選項的錯誤程式碼範例
在遊樂場中開啟
/*eslint func-name-matching: ["error", { "considerPropertyDescriptor": true }]*/
// equivalent to /*eslint func-name-matching: ["error", "always", { "considerPropertyDescriptor": true }]*/
var obj = {};
Object.create(obj, {foo:{}});
Object.defineProperty(obj, 'bar', {});
Object.defineProperties(obj, {baz:{ }});
Reflect.defineProperty(obj, 'foo', {});
includeCommonJSModuleExports
一個布林值,預設為 false
。如果 includeCommonJSModuleExports
設定為 true,則此規則將檢查 module.exports
和 module["exports"]
。
{ includeCommonJSModuleExports: true }
選項的錯誤程式碼範例
在遊樂場中開啟
/*eslint func-name-matching: ["error", { "includeCommonJSModuleExports": true }]*/
// equivalent to /*eslint func-name-matching: ["error", "always", { "includeCommonJSModuleExports": true }]*/
;
;
何時不應使用
如果您想要允許具名函數的名稱與其賦值的變數或屬性的名稱不同,請勿使用此規則。
相容性
版本
此規則在 ESLint v3.8.0 中引入。