讲讲Js中的函数

本文深入探讨JavaScript中的函数特性,包括函数声明与表达式的区别、函数重载、函数属性及方法等核心概念。此外,还详细介绍了如何利用apply、call与bind方法改变函数执行的上下文环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数实例实际上是对象!每个函数都是FUNCTION类型的实例,与其他引用类型一样具有属性和方法,因此函数名实际上就是一个指向函数对象的指针,并不与函数绑定。

1.函数声明的两种方法:

1)函数声明式

function sum(num1,num2){}

2)函数表达式

var sum=function(num1,num2){};

其实还可以使用Function构造函数,不过一般不用。

2.函数没有重载

后声明的函数覆盖先声明的函数,因为函数名只是一个指针,你可以让它指向不同的对象。

3.函数声明与函数表达式的区别

解析器会先读取函数声明,是一种函数声明提升,而函数表达式直到解析到它所在的代码时才会真正解释执行。

4.函数本身就是一个对象,没什么特别,完全可以当做一个值一样传递。

5.函数内部属性

arguments前面聊过了,主要来说说this,this引用的是函数执行的环境对象——或者也可以说是this值,全局作用域中就是window。简单说,就是谁调用函数,函数里的this就指向谁。

6.函数属性和方法

每个函数都有length和prototype方法,其中length属性表示函数希望接受的命名参数的个数。

prototype是函数的原型,prototype对引用类型来说,都是保存他们所有实例方法的所在,比如toString实际上是保存在原型下的,只是通过实例来访问罢了。

原型是不能用for-in枚举的

每个函数都包含两个非继承而来的方法,apply和call,这两个方法是用来在特定的作用域中调用函数,实际上等于设置函数体内的this值,apply方法接收两个参数,一个是在其中运行函数的作用域, 另一个是参数数组。call的区别在于它的参数必须一个一个列举出来。二者最重要的作用是扩充函数运行的作用域。这种方法的好处是,对象和方法不需要关联,不需要把方法绑定成对象的属性就可以在这个对象上调用这个方法 。

除此之外,还有一个bind方法,该方法会返回一个新的函数,这个新的函数绑定了bind指定的作用域,无论在何处调用,this都指向bind绑定的对象。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值