js-函数

js-函数

徐徐
前端
发布于2023-09-27 23:36:43
🌺前言
js中的函数

1.定义函数的三种方式

函数声明,函数表达式,构造函数new

2.箭头函数

  1. 不能使用arguments,super,new.target
  2. 不能作为构造函数
  3. 没有prototype属性

3.函数名

一个指向函数体的指针,所以函数可以相互赋值,有多个名字 函数有一个name的可读属性:

javascript
        const func1 = function(){}
        const func2 = ()=>{}
        function func3(){}
        const func4 = func1.bind(null)
        console.log(func1.name)
        console.log(func2.name)
        console.log(func3.name)
        console.log(func4.name)
        console.log((()=>{}).name)
        console.log(new Function().name)

4.参数

• 可传可不传,行参个数和传的也没必要个数一样 • 可以通过伪数组arguments来访问 • 都是值传递,对象传的是引用地址 • 没有重载 • 重复定义,下面的会覆盖上面的定义 • 默认参数为undefined,也可以手动指定,是在调用时才起作用,定义时不起作用 • 箭头函数也可以用默认参数,不能省略括号 5.参数作用域和暂时性死区

• 参数作用域:就是参数有自己的作用域,不能引用函数体的变量 • 暂时性死区:根据参数的顺序,后面的默认参数可以引用前面的值,但是前面不能引用后面的

6.es6的收集参数和arguments的区别

1.剩余参数只包含那些没有对应形参的实参,而 arguments 对象包含了传给函数的所有实参。 2.arguments对象不是一个真正的数组,而剩余参数是真正的 Array实例,也就是说你能够在它上面直接使用所有的数组方法,比如 sort,map,forEach或pop。 3.arguments对象还有一些附加的属性 (如callee属性)。

7.函数声明和函数表达式

是否有函数提升

8.函数内部的arguments,this,new.target

arguments: 属性callee:含义是指向当前arguments对象所在的函数 严格模式不能访问 this: • 普通函数:指的是当前调用该函数时的上下文对象,默认是全局上下文对象(网页环境中是window) • 箭头函数:指的是定义函数的上下文对象 • caller:指的是当前调用当前函数的函数 func.caller arguments.callee.caller:和func.caller结果是一样的 arguments.caller:严格模式不能访问,非严格是undefined,为了区分func.caller,且不能赋值

9.函数的属性和方法

length:记录命名的形参个数 prototype:显示原型

10.尾调用优化

含义: • 没优化之前,每多一次嵌套函数,多一个栈帧 • 优化后,每次只存在一个栈帧 条件:

  1. 严格模式下
  2. 外部函数的返回值是对尾调用函数的调用
  3. 尾调用函数执行完,不需要额外的操作
  4. 尾调用函数不涉及闭包

11.IIFE

可以模拟块级作用域

12.关于函数中的this:

this关键字是函数运行时自动生成的一个内部对象,也被称作为环境对象,只能在函数内部使用。谁调用this,this就指向谁。谁调用我,我就指向谁 this的三种指向

  1. 普通函数; 函数名() this指向window
  2. 对象方法: 对象名.方法名() this指向对象
  3. 构造函数; new 函数名() this指向new创建实例对象

目录

文章最后更新于 2024-08-30 16:43:51
留言
暂无数据

~~空空如也