js函数

作者: Viewwei | 来源:发表于2020-11-08 15:31 被阅读0次

函数其实也是一个对象,函数名就是指向指针函数的对象。Function可以有自己的属性和方法。属性.name代表函数的名称

  1. 箭头函数
    ES6新增的使用胖箭头=>语法定义函数表达式的能力。任何使用函数的地方都可以使用箭头函数。但箭头函数只有一个参数的时候,可以省略参数的括号,多个参数不能省略。如果函数体只有一条执行语句,可以省略花括号,表示执行这条语句,并返回执行语句的返回值。箭头函数和普通函数的区别是:箭头函数不能使用agruments super new target ,也不能用作构造函数,箭头函数没有prototype属性
  2. 函数名
    函数都有一个name属性,获取函数的名称。同时还有和bind属性。用于绑定函数this的指向
    3 参数
    函数的参数可以使用arguments获取参数名称。箭头函数虽然没有argument参数。但是可以使用函数包装箭头函数的形式来取得argument。
    4 默认参数
    ES6 提供函数默认参数值得样式。但是函数的arguments不能显示默认参数的默认值
    5 参数的扩展和收集
    函数可以使用扩展符号的方式来把参数传递到函数里面
let value =[1,2,3,4]
function sum(...values)
{
  consoloe.log(value )
}
sum() //[[1,2,3,4,5]]

6 函数申明和函数表达式
函数申明和函数表达式基本上是一致,但是还是存在着一点点的差异。函数声明在代码执行之前会被读取,并且添加到上下文中,所以函数声明有着函数声明提升的概念,而函数表达式却没有这种理念。因为函数名本身就是一个指针,所以函数可以作为参数传递到其他函数中。
7 函数内部属性arguments
函数内部所以参数都保存在arguments中,但是arguments对象其实有一个callee对象,是指向arguments对象所在函数的指针

function add(num) {
  if (number < 1) {
    return 1
}else {
  return number *arguments.callee(number)
  }
}

8 函数内部属性this
标准函数中,this引用的是把函数当成方法调用的上下文对象。在网页中this指向window。箭头函数和普通函数this是有区别的。箭头函数的this指向的是定义箭头函数对象的上下文,普通函数this指向的是调用函数的上下文

let a = 100
function A() {
    this.a = "view"
    setTimeout(() =>console.log("a:" +this.a),2000) //view this指向a
    setTimeout(function(){
        console.log("b-a:"+this) //a this指向a
    },3000)

}
let AO = new A()

8 函数caller属性
函数的caller属性方法可以有多个参数,第一个参数表示函数的上下文,后面的蚕食表示函数的参数
9 函数new.target方法
ES6新添加了new.target新属性。如果函数是使用new创建的对象,那么newtarget有值,如果是普通调用的,那么new.target就没有值。
10 函数的属性和方法
每个属性都有三个属性:length,name和prototype。name用来表示函数的名称,length用来表示函数参数的个数,prototype用来保存函数的方法。比如toString.valueOf apply call方法
11 函数bind方法
函数bind方法用来绑定函数this的指向哪个上下文
12 函数闭包
闭包定义:闭包是指那些引用另外一个函数作用域中变量的函数。
闭包this对象:闭包中如果函数是普通函数,那么闭包中的this会指向执行函数的上下文。如果是箭头函数,那么this指向的死定义箭头函数的上下文
13 立即调用函数
立即调用的匿名函数又被称作立即调用函数(IIFE).IIFE具有块级作用域、IIFE可以解决闭包问题和for循环中var的问题
14 私有变量
函数中可以通过特权方法,静态属性方法,模块模式访问到函数的私有属性

相关文章

网友评论

      本文标题:js函数

      本文链接:https://www.haomeiwen.com/subject/whkhbktx.html