解析js之构造函数

发布时间:2023年12月20日

一、函数介绍
函数就是将实现特定功能的代码封装起来,当我们需要实现特定功能时,直接调用函数实现即可,不需要每次都写一堆代码,实现代码的复用。

函数的作用:
1、实现功能的封装,提高代码复用率
2、用于构建对象的模板(构造函数)

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

二、函数的声明

语法:

function 函数名(形参列表){
    //函数体
}

我们也可以写成函数表达式的形式:

var 函数名 = function(形参列表){
    //函数体
}

例子:

// 函数声明
function sum(a,b){
  return a + b
}
//函数声明之后,需要调用才能执行
// 函数调用:函数名(实参)
console.log(sum(1,2))  //3

写成函数表达式的形式:

// 函数声明
var sum = function(a,b){
  return a + b
}
// 函数调用:函数名(实参)
console.log(sum(1,2)) //3

函数声明提升
函数声明与var声明的变量类似,也存在声明提升。

sum(1,2) //在此处调用函数不会报错,因为存在函数声明提升
function sum(a,b){
  return a + b
}

注意:使用函数表达式声明函数时,不可以把函数调用写在函数声明前面,因为变量赋值不存在提升。?

三、函数内部属性

函数内部属性只能在函数内部才能访问

arguments

arguments是一个类数组对象,包含着传入函数中的所有参数。arguments主要用途是保存函数参数。

function foo(){
  console.log(arguments) // [Arguments] { '0': 1, '1': 2, '2': 3, '3': 4 }
  console.log(arguments[1]) // 2
}
// 当传递的实参个数超过形参的个数的时候不会报错,所有的实参都会保存在arguments里
foo(1,2,3,4) 

注意:arguments 中存的是实参,而不会存形参

function foo(a,b = 2,c = 3){
  console.log(arguments) // [Arguments] { '0': 1 }
  console.log(b) //2
  console.log(c) //3
}
//只传了一个实参,那么arguments中就只有一个值
foo(1) 

callee 属性

arguments 对象有一个名为callee的属性,该属性是一个指针,指向拥有这个arguments对象的函数。

?

?

文章来源:https://blog.csdn.net/2302_79245293/article/details/134227641
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。