函数的声明方式
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() 是同一个函数,只不过执行的上下文不同