关于javascript:学习笔记

1.

函数的申明

JavaScript 有三种申明函数的办法。

(1)function 命令

function命令申明的代码区块,就是一个函数。function命令前面是函数名,函数名前面是一对圆括号,外面是传入函数的参数。函数体放在大括号外面。

function print(s) {
  console.log(s);
}

(2)函数表达式

除了用function命令申明函数,还能够采纳变量赋值的写法。

var print = function(s) {
  console.log(s);
};

采纳函数表达式申明函数时,function命令前面不带有函数名。如果加上函数名,该函数名只在函数体外部无效,在函数体内部有效。

var print = function x(){
  console.log(typeof x);
};

x
// ReferenceError: x is not defined

print()
// function

(3)Function 构造函数

第三种申明函数的形式是Function构造函数。

var add = new Function(
  'x',
  'y',
  'return x + y'
);

// 等同于
function add(x, y) {
  return x + y;
}

2.函数的反复申明

如果同一个函数被屡次申明,前面的申明就会笼罩后面的申明。

function f() {
  console.log(1);
}
f() // 2

function f() {
  console.log(2);
}
f() // 2

3.length 属性

函数的length属性返回函数预期传入的参数个数,即函数定义之中的参数个数。

function f(a, b) {}
f.length // 2

下面代码定义了空函数f,它的length属性就是定义时的参数个数。不论调用时输出了多少个参数,length属性始终等于2。

4.toString()

函数的toString()办法返回一个字符串,内容是函数的源码。

function f() {
  a();
  b();
  c();
}

f.toString()
// function f() {
//  a();
//  b();
//  c();
// }

5.arguments 对象

(1)定义

因为 JavaScript 容许函数有不定数目的参数,所以须要一种机制,能够在函数体外部读取所有参数。这就是arguments对象的由来。

arguments对象蕴含了函数运行时的所有参数,arguments[0]就是第一个参数,arguments[1]就是第二个参数,以此类推。这个对象只有在函数体外部,才能够应用。

var f = function (one) {
  console.log(arguments[0]);
  console.log(arguments[1]);
  console.log(arguments[2]);
}

f(1, 2, 3)
// 1
// 2
// 3

失常模式下,arguments对象能够在运行时批改。

(2)与数组的关系

须要留神的是,尽管arguments很像数组,但它是一个对象。数组专有的办法(比方sliceforEach),不能在arguments对象上间接应用。

如果要让arguments对象应用数组办法,真正的解决办法是将arguments转为真正的数组。上面是两种罕用的转换方法:slice办法和逐个填入新数组。

var args = Array.prototype.slice.call(arguments);

// 或者
var args = [];
for (var i = 0; i < arguments.length; i++) {
  args.push(arguments[i]);
}

(3)callee 属性

arguments对象带有一个callee属性,返回它所对应的原函数。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理