最详细的JS学习笔记(连载)第二章、函数(创建方法)

2、函数的创建方法

(1)第一种定义方式:函数声明

这种定义方式,函数不属于任何对象,在js中他始终是默认的全局对象。

fun();函数可以先调用,是因为在js的最顶层,都有一个预编译处理机制。

function fun(){

console.log(3);   //return this;  为什么函数会输出函数体中的内容,因为在函数体的最后,默认会有一个  return this 不过也可以修改成其他的返回值 。这里的this指的是全局对象window.

}

fun();//函数必须调用,不调用函数是没有用的。

(2)第二种定义方式:函数表达式(存储在变量中)

       赋值匿名函数             自执行函数           作为返回对象

var fun=function(){         (function(){             return function(){

           console.log(4);             console.log(4);          console.log(4);

}                        });                  }

fun();//这里的函数调用,必须写在函数声明的后面、就是说要先声明在使用。

document.body.οnclick=function(){}  // 函数表达式

(3)第三种定义方式:构造函数

       var fun=new Function(console.log(8));//这种函数可以自调

       var fun=Function();   //这两种方式是等价的

(4)函数声明和函数表达式有什么区别呢?

1)解析器在向执行环境中加载数据的时候,对函数声明和函数表达式是不一样的。

解析器首先会读取函数声明,并且使得这段函数声明代码在任何代码之前都可调用。这就是我们平时所说的函数声明提升。

函数表达式不一样,他必须等到函数解析器执行到他所在的代码块的时候,才会被真正的执行。比较下面2个例子

函数声明会被前置                          函数表达式的变量会被提前

function a(){};<-----|  //相当于函数声明提前了          var a;<-----| //变量被前置值为undefined

a();    //1                                          a();    //TypeError: a is not a function  

function a(){                                        var a =function(){

   var b = 1;                                               var b = 1;

   console.log(b);                                          console.log(b);

};                                               }         

2)、函数没有重载   如果声明了2个同名函数,结果是后面的函数覆盖了前面的函数。

function sun(a){            function sun(a){

           return a+100;            return a+200;

}                        }

var result=sum(2)           //202


本人是以网络视频与网络文章的方式自学的,并按自己理解的方式总结了学习笔记。有不正确之处请各位高手多多指点,一起学习进步。【VX:czlingyun    暗号:CSDN】

  • 13
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灵韵设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值