javaScript复习

一、函数的定义

1、函数声明:

function 函数名() {
   //...
}

特点:无论在函数定义前,还是函数定义后调用,都能执行
为什么都能执行???
因为函数声明方式:函数提升

2.函数表达式

var 变量名=function() {
   //....
}

变量名()

特点:只能在函数定义后调用,才能执行
javaScript异步

js中的同步和异步的区别和理解

前端面试中很容易问到的问题就是同步和异步的,其实很多人潜意识是知道怎么用,也大概明白一些,但是就是不知道该怎么表达,怎么去描述这个问题。我们可以按这个思路来回答—why-what-how
why(为什么):js是单线程的,只能处理完一件事再做另外一件事,但是设想如果前面一件事花费的时间特别长,我们就只能一直等着他,就会阻塞下面的进程,这样程序运行时间增长,就会降低用户体验。(这里可能有人会想到,如果js是多线程的,不就解决这个问题了,但是其实这是由他的主要功能决定的,他的功能是与用户互动,以及操作DOM,如果在同一个时间,一个进程创建了这个节点,另一个删除了这个节点,那就很尴尬了)
what(同步和异步是什么):
同步:按照一定的顺序去执行,执行完一个才能执行下一个
异步:执行顺序是不确定的,由触发条件决定,什么时间执行也是不确定的,即使是定时器(下面做解释),异步处理可以同时执行多个。

下面看一个小小的异步的案例

<script>
        setTimeout(function() {
            console.log(1)
        })
        console.log(2);
    </script>
    2 1

上面得执行结果是先打印2,然后再打印1,(下面解释)
如果想知道里面的原理,我们可以从js的执行机制入手:
首先了解两个概念,同步任务和异步任务:
同步任务:只有前一个任务执行完成后,才可执行下一个任务,在主线程中
异步任务:这个队列的所有任务都是不进入主线程执行,进入任务队列,被浏览提供的线程执行,当执行完毕后就会产生一个回调函数,并且通知主线程,在主线程执行完当前所执行的任务后,就会调取最早通知自己的回调函数,使其进入主线程中执行,比如ajax请求,再主线程中呈现的就是请求结果~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值