函数的声明方式

89 阅读1分钟

函数的声明方式

1 函数声明

  function  sum(a ,b){ return a + b}

3 函数表达式声明 匿名函数 (兰姆达函数)

let sum= function(a,b){ return a + b};   // 这里的函数末尾的分号,和其他变量初始化是一样的。 

3 构造器声明

let sum = new Function("num1", "num2", "return num1 + num2");

4 箭头函数

let sum = (num1, num2) => { return num1 + num2; };

函数名

函数名就是指向函数的指针,所以他们和包含其他对象指针具有相同的行为。 (一个函数可以有多个名称)

function sum(num1, num2) { return num1 + num2; } 
console.log(sum(10, 10)); // 20 
let anotherSum = sum; 
console.log(anotherSum(10, 10)); // 20

区别 :

1 箭头函数不能使用 arguments、super 和 new.target,也不能用作构造函数。此外,箭头函数也没有 prototype 属性

2 函数声明提升:因为函数声明会在任何代码执行之前先被读取并添加到执行上下文。

3 this指向不同,在标准函数中:this 引用的是把函数当成方法调用的上下文对象(谁调用指向谁), 在箭头函数中:,this引用的是定义箭头函数的上下文。

 window.num =1
function sum (){ 
             console.log(num)
             }
             
  sum()  //1
  
  
  let 0 ={
        mum =2 
  }
  o.sum =sum
  o.sum() //2
  
 //函数名只是保存指针的变量。因此全局定义的 sum()函数和 o.sum() 是同一个函数,只不过执行的上下文不同