Blog

其他

2018-01-27

Function.length

函数必传参数个数。

不包括剩余参数(…rest)个数,仅包括第一个具有默认值参数之前的参数个数。

Function 构造器本身是一个 Function,length 为 1。

Function 原型对象的 length 为 0。

console.log(Function.length); /* 1 */

console.log((function()        {}).length); /* 0 */
console.log((function(a)       {}).length); /* 1 */
console.log((function(a, b)    {}).length); /* 2 etc. */

console.log((function(...args) {}).length); 
// 0, rest parameter is not counted


console.log((function(a, b = 1, c) {}).length);
// 1, only parameters before the first one with 
// a default value is counted

console.log((function(a = 1, b, c) {}).length) // 0
console.log((function(b, a = 1, c) {}).length) // 1
console.log((function(b, c, a = 1) {}).length) // 2

Function.name

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/name

function doSomething() { }
doSomething.name;  // "doSomething" 

(new Function).name; // "anonymous"

var o = {
  foo(){}
};
o.foo.name; // "foo";

function foo() {}; 
foo.bind({}).name; // "bound foo"

arguments.length

函数被调用时实际传参的个数。