JavaScript 高级(2)- Arguments,Function - 学习进行中

函数概述

函数是ECMAScript的核心。
声明方式:关键字function,函数名,一组参数,以及在括号中待执行的代码。
如果函数无明确的返回值,或者调用了没有参数的return语句,返回的值是undefined

arguments对象

在函数代码中,使用特殊对象arguments的作用:

  • 就无需明确指出参数名,就能访问它们
  • 可用来检测函数对象的参数个数
  • 模拟函数重载
function explainArguments() {
	// 访问,检测个数
	console.log(arguments[0], arguments.length);
	// 模拟函数重载
	if (arguments.length === 1) {
		console.log(arguments[0] + '拼接');
	} else if (arguments.length === 2) {
		console.log(arguments[1] + 100);
	}
}
explainArguments('string', 100, '456');  // string, 3
explainArguments('string', 100);  // 200
explainArguments('string');  // string拼接

Function对象(类)

ECMAScript的函数实际上是功能完整的对象。
Function类可以表示开发者定义的任何函数。
用Function类直接创建函数的语法如下:

var function_name = new function(arg1, arg2, ..., argN, function_body)

理解:

function add(iNum) {
	console.log(iNum + 10);
}
function add(iNum) {
	console.log(iNum + 20);
}
add(10); // 30 第二个函数重载了第一个函数

重写代码来理解:

var add = new Function('iNum', 'console.log(iNum + 10)');
var add = new Function('iNum', 'console.log(iNum + 20)');  // 重新定义了
add(10); // 30

例如:
如下代码,add被定义为函数,newAdd被声明为指向同一个函数的指针。用这两个变量都可以执行该函数的代码,输出相同的结果。因此,如果函数名只是指向函数的变量,可以把函数作为参数传递给另一个函数。

var add = new Function('iNum', 'console.log(iNum + 10)');
var newAdd = add;
add(10);  // 20
newAdd(10);  // 20

如下代码,传参两个,要调用的函数和快递给该函数的参数

function foo(fn, arg) {
	fn(arg);
}
var add = new Function('iNum', 'console.log(iNum + 10)');
foo(add, 10);  // 20

尽量不使用Function构造函数来创建函数,因为它定义函数比用传统方式要慢得多。所有函数都应该看作Function类的实例

Function对象的length属性

如下函数,add()定义一个参数,长度为1;add2()没有定义参数,长度为0。

function add(iNum) {
 	console.log(iNum);
 }
 function add2() {
	console.log('123');
}
console.log(add.length);  // 1
console.log(add2.length);  // 0

ECMAScript可以接受任意多个参数(最多25个)

Function对象的方法

Function 对象也有与所有对象共享的 valueOf() 方法和 toString() 方法。这两个方法返回的都是函数的源代码,在调试时尤其有用。

function add(iNum) {
  console.log(iNum + 10);
}
add.toString();
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值