面试题总结--JavaScript

1-typeof的返回值 

    number、string、boolean、object、undefined、function、symbol

2-类型转换

    强制:parseInt、parseFloat、Boolean、String、Number

    隐士:>、<、+、*、==、if、||、&&

    除了判断null或者undefined其他一律三等

3-split和join

    split用于将字符串通过指定分隔符拆分为数组

    join则像是一个split的你操作,用以将数组转字符串,默认转出的字符串以逗号分隔,可以指定""参数消除

4-常用的数组操作

    push、pop、shift、unshift、splice、join、slice、concat、fill、sort、flat、from、reverse、includes、indexOf、            map、forEach、filter、every、some、reduce

5-ie兼容性

    event || window.event

    event.target || event.scrElement

    document.documentElement.clientWidth || document.body.clientWidth

    event.stopPropagation || event.cancelBubble=true

    event.preventDefault || event.returnValue = false

6-ajax

    I-get和post的区别

        get请求参数会附带到地址栏后,明文传输,安全性较低,不同的浏览器对大小限制不同,chrome在7700左右,                  主要用于获取

        post参数放在虚拟载体中,对用户不可见,相对较安全,理论上对数据量无限制,主要用于提交

    II-ajax实现过程

        //兼容处理

        var xhr = null

        if(window.XMLHttpRequest){

            xhr = new XMLHttpRequest()

        }else{

            xhr = new ActiveXObject("Microsoft.XMLHTTP")

        }

       //准备请求

        xhr.open(get/post) //若为post需要setRequestHeader

    //发送

        xhr.send()

    //监听状态

        xhr.onreadyStateChange = ()=>{

                if(xhr.readyState == 4 && xhr.status == 200){

                        //获取api数据

                        json.parse(apiData)

                }

        }

7-call和apply的区别

    都用于改变this指向

    传参方式不同,call单个,apply传递一个数组

8-什么是事件委托

    通过事件冒泡将子元素委托到父元素处理,这样具有一定的动态性,不需要考虑后续子元素的增减,亦不需要重新        注册事件,但是应用场景也仅限于此

9-闭包

    当在函数内return一个函数,且return的函数保留是外层函数的引用,会生成闭包,闭包会阻止变量被回收,延长了        生命周期。但是滥用会导致内存泄漏

    使用方式:将函数作为参数或返回值

    应用:

    表现:定义处和使用处不一样


10-常用dom操作

    I-创建

        createElement、createTextNode

    II-插入

        insertBefore、appendChild

    III-替换

        replaceChild

    IV-删除

        removeChild

    V-获取

        getElementsByClassName、getElementById、getElementsByTagName、querySelector(静态)

11-jsonP

    利用script标签的跨域性动态创建并插入,但是只支持get请求,且需要与后台配合

12-load和ready的区别

    window.onload会等待页面资源加载完毕,这包括图片、css、js、html

    ready在原生上并没有实现,它只关注dom是否创建完毕

13-函数声明与函数表达式的区别

    使用function关键字定义的函数将在预编译过程中被提升,函数是全局可用的;而使用var定义的则不会被提升,只        在执行到时才有含义

14-http

    https://www.jianshu.com/p/7ed690f4b83a

15-异步和同步的区别

    异步基于js单线程,不会阻塞代码,同步会

16-手写promise加载图片

    function loadImg(src){

        return new Promise((resolve,reject)=>{

                let img = document.createElement('img')

                img.onload = ()=>{

                    resolve(img)

                }

                img.onerror = ()=>{

                    reject('err')

                }

                img.src = src

        })

    }

17-dom事件绑定

    let elem = document.getElementById('test')

    elem.addEventListener(eventType,callback)

    elem.onEventType = callback

    <div onEventType="callback"></div>

18-判断字符串以字母开头,后边可以是字母,数字或下划线,长度5-30

    /[a-zA-Z]\w{5,30}/

19-null和undefined的区别

    null表示一个值为空的对象,使用Number转换的结果为0;undefined表示一个已声明但未初始化值的变量,使用                  Number转换结果为NaN

    undefined常见的场景如下

        函数参数未传    

        函数无返回值

        对象不存在某属性

        变量声明未赋值

    null常见常见

        原型链终点

        对象占位

20-new干了什么

    创建一个对象,并将this指向该对象,将函数的属性和方法拷贝一份同时对原型继承,最后返回该对象

21-按需加载

    defer    并行加载、非阻塞、保证顺序

    async    不保证顺序

    动态script、按需加载

22-flash和ajax

    flash适用媒体、质量图,ajax适用文本、搜索

    都用于服务器通信,都实现了局部刷新

23-写出下面代码的执行结果


    结果:4 1 3 5 2

    解析:引擎执行时打印4,调用a函数输出1,遇到await,先对await进行求值输出3,然后将后续代码视为异步交管webAPI后继续执行同步代码输出5,此时同步代码执行完毕且其他可退出调用栈的代码,开启事件循环,轮询回调队列输出2

24-什么是宏任务和微任务,两者的区别

    宏:定时器、dom事件、ajax

    微:promise、async/await

    区别:微任务的执行时机早于宏任务

25-值类型和引用类型的区别

    值存储在栈内存中,引用类型存储在堆内容中;当变量值为引用类型时,会在堆内存中开辟空间并将地址交予变量(变量在栈内存)

26-如何判断数组

    arr instanceof Array

27-深拷贝


28-手写简易jq


29-truely和falsely变量

    两次取反后为true或false(除了0、‘’、NaN、null、undefined、false外都是truely变量)

30-class的原型本质,如何理解

    原型和原型链

    当使用new操作符时,返回的实例会被添加__proto__隐式原型指向原型对象,而每一个原型对象又有自己的隐式原型指向父级的原型对象,直到null

31-手写继承

   

32-手写bind


33-this

    场景:普通函数、call/apply/bind、对象方法、class、箭头函数

    指向:取值取绝于执行(箭头函数的this取其父级中的this)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351