您的位置:首页 > Web前端 > JavaScript

JavaScript函数的几种定义方式(个人感觉挺全乎)

2020-08-11 07:19 253 查看

javascript定义的函数的几种方式

归纳一下函数定义的几种方式

一、函数的组成:函数名+函数体

(1).使用function关键字定义函数–具有优先级,优先将function关键字定义的函数优先执行

  function  functionName(arg0, arg1 ,..., argN){

      statements

  }

  函数的调用:functionName()

(2).使用函数表达式的形式定义函数(即将匿名函数复制给变量)

  var  variable = function(arg0, arg1 ,..., argN){

    statements

   }

  console.log(typeof  variable);     //function

  函数调用:variable();

(3).使用new Function构造函数定义函数

1.构造函数也是一个普通函数,创建方式和普通函数一样,但构造函数习惯首字母大写

2.构造函数和普通函数的区别在于,调用方式不一样。作用也不一样(构造函数用来新建实例对象)

3.调用方式不一样。

a.普通函数的调用方式:直接调用person()

b.构造函数的调用方式:需要使用new关键字来调用new Person()

4.构造函数的函数名与类名相同:Person()这个构造函数,Person即是函数名,也是这个对象的类名

5.内部使用this来构造属性和方法

function Person(age,){
this.age = age;
this.name = name;
this.sex = sex;
this.sayHi = function(){
alert("aaa")
}
}
let person = new Person(18,"zs","男")
console.log(person.name) // zs

6.构造函数的执行流程

A、立刻在堆内存中创建一个新的对象

B、将新建的对象设置为函数中的this

C、逐个执行函数中的代码

D、将新建的对象作为返回值

7.普通函数例子:因为没有返回值,所以为undefined

//普通函数
function person(){

}
let per = new person()
console.log(per) //undefined

7、构造函数例子:构造函数会马上创建一个新对象,并将该新对象作为返回值返回

function Person(){

}
let per = new Person()
console.log(per) //"[Object Object]"

8、用instanceof 可以检查一个对象是否是一个类的实例,是则返回true

所有对象都是Object对象的后代,所以任何对象和Object做instanceof都会返回true
function Person(age){
this.age = age
}
let per = new Person()
console.log(per instanceof Person)

(4).箭头函数()=>{}

语法:

(参数列表)=>{
//函数体
}
1.参数只有一个括号可以省略,参数多个必须写括号
2.只包含一个表达式花括号可以省略还有return,包含多个不可以省略
3.箭头函数的this指向为父作用域的this,不是调用时的this,call,apply,bind都改变不了
4.普通函数的this指向永远是谁调用了就指向谁
5.箭头函数不能作为构造函数,不能使用new关键字
6.箭头函数没有原型属性

(5).自执行函数

语法:

(
function(形参){

}
)(实参)
自己调用自己

(6).匿名函数

语法:

function(){
console.log("111")
}
匿名函数无法自己运行,会报错因为语法问题,解决方法如下
(
function(){
console.log("111")
})()	// 直接为自执行函数
应用场景:
1.给元素添加事件的时候 2.对象的方式 3.函数表达式 4.回调函数 5.作为return的返回值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: