js面试题

本文介绍了JavaScript的执行流程,强调其单线程特性和事件循环机制,包括微任务与宏任务的概念,如Promise和setTimeout。同时,讨论了作用域规则,特别是变量提升和函数作用域,以及箭头函数与普通函数在this指向、构造函数和prototype上的区别。此外,还提到了两种检查变量是否为数组的方法:Array.isArray和instanceof。
摘要由CSDN通过智能技术生成

Js微任务和宏任务

  //js是单线程语言

    /*

      js代码执行流程:同步执行完 ==> 事件循环

      同步的任务都执行完了,才会执行事件循环的内容

      进入事件循环:请求,定时器,事件

      事件循环中包含:[微任务,宏任务]

      微任务:promise.then,Object.observe

      宏任务:setTimeout,setInterval

      要执行宏任务的前提是清空了所有的微任务

      流程:同步==>事件循环[宏任务和微任务]==>微任务==>宏任务

   

    */

 js作用域考题

 /*

      js作用域

      1,除了函数外,js是没有块级作用域

      2,作用域链:内部可以访问外部的变量,但是外部不能访问内部的变量

        注意:如果内部有,优先查找内部,如果内部没有就查找外部的

      3,注意声明变量是用var还是没写(window)

      4,注意,js有变量提升机制,[变量悬挂声明]

      5,优先级,声明变量->声明普通函数->参数->变量提升

      面试的时候怎么看?

        1,本层作用域有没有此变量[注意变量提升]

        2,注意,js除了函数外没有块级作用域

        3,普通声明函数是不看写函数时候的顺序

     *

     */

 箭头函数和普通函数的区别

        1,this指向问题,

                箭头函数的this是在定义时就决定的,而且不可修改(call,apply,bind)

                箭头函数的this指向定义是外层第一个普通函数的this

        2,箭头函数不能new(不能当做构造函数)

        3,箭头函数没有prototype,没有arguments

   

//js判断变量是不是数组

方式一:isArray

    var arr = [13,14,520]

    console.log(Array.isArray(arr))

方式二:instanceof

    var arr = [13, 14, 520]

    console.log(arr instanceof Array)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值