JavaScript中函数和构造函数总结

何为函数?

  函数是可以重复执行的代码块。

  函数是一段JavaScript 代码,它只定义一次,但可被执行或调用任意次。

  在JavaScript 中,任意函数都是Function 的实例。

函数定义的方式:

   1.声明式函数定义: function  函数名 (){};

  这种定义方式,会将函数声明提升到该函数所在作用域的最开头,在这个函数作用域内,在任意位置都可以调用这个函数。

 2.函数表达式:var fun = function(){};

  此方式定义的函数,只能在该作用域中,这段赋值代码执行之后才能通过fun()调用函数,否则,由于变量声明提升,fun === undefined。

 3.Lambda 表达式(箭头函数):var f = v => v;

var f = () => 5;
// 等同于
var f = function () { return 5 };

var sum = (num1, num2) => num1 + num2;
// 等同于
var sum = function(num1, num2) {
  return num1 + num2;
};

 4.new Function 形式: var fun1 = new Function (arg1 , arg2 ,arg3 ,…, argN , body  );

  此方式很少用到,因为任意函数都是Function 的实例,所以可以通过new Function 创建实例对象。Function构造函数参数都是字符串类型。除了最后一个参数, 其余的参数都作为生成函数的参数即形参。最后一个参数, 表示的是要创建函数的函数体(即函数内部需要执行的代码)。

  例: 

var 函数名 = new Function(“参数1”,”参数2”,”参数3”……”函数体”);
如:
var 函数名 = new Function("x","y","var z=x+y;return z;");

箭头函数简化了函数的写法,表达式比较简洁,且当有多个参数时可以与变量解构赋值一起使用,需要注意的是,在函数中this对象的指向是可变的,但是在箭头函数中,this的指向是固定的

总结:函数的几种定义方式其实都是最后一种new Function 的语法糖,当我们定义函数时候都会通过 new Function 来创建一个实例函数,前三种方法只是进行了不同形式的封装。

补充:对象里的方法

如果有一个函数是在一个对象里,一般我们称这种函数是对象的一个方法(method)。

var obj = {
 greet: function (greeting, name) {
  return `${greeting}, ${name}`
 }
}
//ES6 可以按下面的方式给对象定义方法:
var obj = {
 greet (greeting, name) {
  return `${greeting}, ${name}`
 }
}

  

原文地址:https://www.cnblogs.com/webwangjie/p/14210355.html