【JS基础整理—No.02】函数

是对象,是一个引用数据类型

1.函数的本质

首先我们知道函数是引用类型数据,使用函数是为了提高代码的复用性

从本质上讲,函数是一种特殊对象(数组也是一种特殊的对象),函数内部数据私有。

👇这部分关于原型的问题先不细说,总之理解函数的本质是对象即可。

prototype:每个函数都有一个prototype属性,默认指向一个空对象(原型对象)

原型对象添加属性(一般添加方法)作用:函数的所有实例对象自动拥有原型中的属性(方法)

__proto__ 每个实例对象都有一个__proto__属性,该属性指向当前实例对象的原型对象(隐式原型对象)

//默认情况下,一个函数对应两块内存,一块是函数本身,一块是函数原型。一个函数都会与一个原型函数与之对应,函数中有个指针prototype指向原型对象,原型对象中有个constructor指向函数,你中有我,我中有你。
function foo(){}
foo.prototype.constructor===foo;        //true
console.log(foo.prototype);     //空对象,即原型对象

👇 函数内存图解:

 👇 原型继承图解

      紫色画笔部分

2.函数分类

本质上是完全一样的,唯一的区别在于调用方式。

  1. 普通函数【方法】
  2. 构造函数【类-在面向对象中学习】(为了区分将构造函数的函数名大写)

3.函数定义

函数存在变量提升,但需要注意两种方式下变量提升的区别(匿名函数不会被提升)

方式一--函数声明写法

function 函数名(形参){}
//-------------------------------------
function add(int a,int b){}     //❌
function add(a,b){}             //✅
//-------------------------------------
let result=add(1,2);
function add(a,b){
    return a+b
}                               //✅
//由于存在变量的提升,整个函数都被提升
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值