js 面试题总结

1.JavaScript概述(js是什么?)

 JavaScript是一种基于对象的,事件驱动的,跨平台的,客户端脚本语言

 基于对象、事件驱动、跨平台、客户端脚本、弱类型、解释性(编程)语言

2.运算符的优先级

()自增自减(单目)算数运算符关系运算符逻辑运算符三目运算赋值

3.js的三大结构

顺序结构条件结构循环结构

Case的穿透特性。

4. break、continue、return的区别

break多用于switch语句,防止case的穿透特性,执行完语句直接退出循环,不在向后执行。

continue只会退出本次循环,不执行后面代码,但循环会继续。

return用在函数返回值中,用了return退出函数,不执行后面代码,如果函数没有返回值是undefined。

5. 什么是作业域链

当访问一个变量时,先在当前作用域找,如果找不到时在向父级的作用域找,在找不到在向上级的作用域找,最后找到window如果没有这个变量时,程序报错。

6.函数的好处

1.函数实现一段功能的封装,增加了代码的复用性,一次封装多次使用;

2.函数让变量私有化,避免命名空间的污染;

3.通过参数的传递,可以实现功能的多元化;

7.什么是形参什么是实参

形参:函数声明时定义的形式参数,没有具体的值,用来传递参数。

实参:一个有具体的值的参数,可以理解为一个变量,做为参数传递时就叫实参

8.什么是函数的变量提升

当程序执行时会分为预解析和解析两个过程,在预解析的过程中会把所有的var声明和函数声明提升到当前作用域的最开头,进行一个声明不赋值的操作,如果是函数把整个函数提升到开头,如果是匿名函数赋值给了变量,提升的是变量,如果var声明和函数名冲突了,优先保留函数。

9.事件和函数的关系

事件三要素:

    事件源,事件,事件处理程序

关系:事件依赖于函数实现

10.怎么访问对象

访问对象的两种方式:1.对象·键名直接调用。2.对象【“键”】调用

方法二注意,如果键是一个变量不用双引号,且如果键是只能方法二调用,如果是一个函数在【】后面还要加一个小括号。

11.改变数组的方法有那些

增:push加到最后、unshift加到最开头。返回的是改变的新数组的长度。

删:pop删除最后一个,shift删除第一个。返回的是删除的元素。

拷贝:splice(a,b,c)传0以上,0个参数拷贝数组,1个参数重下标位置开始拷贝,2个参数重a拷贝到b,3个以上参数从a拷贝到b并且把后面的数插入数组。返回新数组。

Reverse:数组倒序输出。

12.什么是堆什么是栈

栈:当变量声明时会在内存中开辟一片空间,如果是基本数据类型开辟的是栈空间,每声明一次开辟一次,一个变量等于另一个变量时又开辟了一片空间,一个值变另一个不会变,浏览器清除栈原则:先进后出即先声明最后清除。

堆:当声明的是引用数据类型时,开辟一个堆空间,变量存的是一个指向对应堆空间的地址,当多个变量重复声明时都值向一个堆,如果有一个变量的值变了,即堆空间中的值变了,所有指向这个地址的值都会变。

13.splice和concat的区别

Splice合并数组时,传入的值可以是数组,合并成二维数组,而concat传入的值如果是一个数组,会取出一个一个元素合并。

14.什么是内置对象,举例说明。

Js内部封装的可以直接调用的系统内部的对象就是内置对象,比如时间对象,数字对象。

15.什么是bom模型和dom模型

bom模型就是html在浏览器端运行生成的对象模型,子对象是window,window下的子对象是document、history、location、screen、navigator。

Dom模型其实就是html文档树,html由head、body组成。

16.什么是事件对象

对元素的某种操作就是事件,当触发事件时生成的对象就是事件对象,

17.attributes怎么用

Attribute可以设置自定义属性,也可以获取自定义的属性,也可以移除自定义的属性,getattribute获取的是一个对应属性的集合。Attributes获取的是对应节点的所有属性节点。

18.什么是事件

当某个事件执行时,从子元素向父元素触发或从父元素向子元素触发称为事件流,事件流分为:事件冒泡和事件捕获。

19.事件监听的好处

1. 可以为一个元素绑定多次同一个事件

2. 程序员可以使用事件监听方式确定触发的事件过程是冒泡还是捕获

20.委托的好处和缺点

委托的机制:利用事件冒泡实现

优点:1.把某个事件加到父元素上,提高程序的执行效率

2.动态创建的元素,可以在创建元素的函数体外部为其添加事件

3.减少内存资源的消耗。

缺点:1.只触发target目标节点,其它子节点不触发

2.层级关系太远容易造成事件误判。

21.this的指向

一、自定义函数中:1.this指向window。

2.如果自定义函数在对象中,this指向直属对象。

3.如果在严格模式下,this是undefined。

二、事件绑定中,this指向事件源,即绑定这个事件的元素对象。

三、箭头函数中的this 来源于函数声明时所在的上下文环境(继承)

四、定时器中回调函数中的this指向window

五、this指向改变的方法: blind(),call(),apply()

 blind可以在所有的匿名函数(不包括箭头函数)中使用

call和apply可以在非匿名函数和匿名函数后调用执行,但用于匿名函数时函数会立即执行。函数的实参会通过call的参数一个一个进行传参,

而apply会在第二个参数以数组的方式进行传参。


22.正则的量词有哪些

+:1个或多个。

*:0个或多个。

?:1个或0个。

{a,b}:a到b个。

23.什么是严格模式是什么,有哪些好处

严格模式就语法相对于严格的一种模式,把“use strict”放到程序的最开头就是严格模式的声明,声明后下面就是严格模式的作用域。

好处:1.代码更规范整洁,可读性高。

2.程序效率更高

24.let关键字的特点

1:不允许重复声明变量

2:作用域范围内没有变量提升,所以关键字上方为暂时性死区。

3:会生成块级作用域,故可以在for循环时声明私有化变量。

25.结构赋值的好处

1.可以一次性定义多个变量

2.可以让一个函数返回多个值

3.可以作用在函数的传参上,以对象的方式传递,可以无视参数的顺序但形参与对象的键名要一致。

4.可以轻松实现两个数的交换

26.什么是连缀调用

当一个对象调用多个方法的时候,把它们连接起来调用就是连缀调用。

27.怎么解决定时器私有问题

把定时器赋值给一个私有变量即可,比如对象.变量名,这个定时器就是私有的。

28.什么是对象和面向对象

对象是一个整体,具有属性和方法的事物,对象也可以动态添加属性和方法。

面向对象是一种高级的编程思想,是为了满足不同的人的不同需求的功能而产生的,这种思想就是把任何事物抽象成一个对象来对待,之后再对这个对象进行相关的操作,实现相关需求的编程思想就是面向对象,面向对象可以让复杂的编程简单化,面向对象具有封装、继承、多态的特点。

29.new做了哪些事

1.底层自动创建了一个对象

2.使得构造函数中的this指向了实例对象

3.在实例对象中产生一个__proto__指针(是一个属性),这个指针指向构造函数的原型对象。使得实例对象能够访问原型对象下的属性和方法。

30.怎么创建和调用原型对象

创建:1.用class创建类时,在内部直接创建的对象就是原型对象。

2.用new关键字对象时,在对象的prototype属性下创建的对象。

调用:只有在创建对象时内部可以直接调用,对象外部无法访问原型对象。

31.什么是实例属性

创建构造函数时实例化的属性就是实例属性

32.使用时间对象有哪些需要注意的

1.date.getYear是从1900年开始计算的。

2.获取的月是0-11月。

3.获取的星期是0-6.

4.获取的时间毫秒数是从1970年1月1日0时0分0秒开始计算

33.get和post的区别

1,参数传递的方式

get放在url

post放在请求体中

2,参数大小(由浏览器决定)

get后携带的参数大小,考虑浏览器的兼容性,一般在2k

post理论上没有限制,tomcat可修改

3,安全性post比get要高。

4,请求速度

get比post快

5,post请求时,要先设置一个请求头。get不需要

34.Ajax优缺点

缺点:

1.安全性不高

2.破坏了浏览器的机制

3.不利于浏览器搜索引擎的搜索

4.破坏了程序的异常机制,不利于程序维护

5.容易形成回调地狱,程序的可读性不高。

6.xhr不同的浏览器支持程序不同,所以在兼容性上有一定的不足。

优点:按需取数据,页面无刷新。减少带宽,降级开发成本。

请求速度快。提升用户体验。

35.如何实现跨域(偏后台)

jsonp

xhr2 : cors

服务器代理

iframe

document.domain

36.原型链

原型链:实例对象中会自动生成__proto__指针,这个指针指向构造函数的原型对象,构造函数的原型对象下还会有一个__proto__指向,这个指针指向父类的原型对象,各个指向间形成的链条关系。

37.Ajax原理

[if !supportLists]1. [endif]实例化一个实例化对象xhr = new XMLHttpRequest();

兼容ie6xhr = new ActiveXObject("Microsoft.XMLHTTP");

[if !supportLists]2. [endif]xhr.open(obj.method,obj.url);调用open传方法和地址

[if !supportLists]3. [endif]xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");如果是post请求要设置以上请求头

xhr.send(data);数据传data里

[if !supportLists]4. [endif]xhr.onreadystatechange

监听请求是否成功

38.Cookie的特点

1.cookie是保存在电脑硬盘上的一个文件,内容是一个字符串

2.Cookie是面向路径的。缺省路径 (path) 属性时,Web 服务器页会自动传递当前路径给浏览器,指定路径强制服务器使用设置的路径

3.在一个目录页面里设置的 Cookie 在另一个目录的页面里是看不到的 

4.cookie存储数据不安全

5.cookie存储数据不能超过4kb 最多不能超过50条


39.关于ajax缓存问题

Ajax缓存问题是因为发送的请求地址一样时,会用本地缓存的数据,这时,我们要的是重新获取,解决方法,在地址后面跟一个时间戳

40.什么是闭包,优缺点

闭包的概念:

   有权访问另一个函数中私有变量的函数,

  1,函数套函数

  2,一个函数访问了另一个函数中的变量

  注意:一般是将一个函数作为另一个函数的返回值来执行

闭包的好处

  变量私有化,避免命名空间的污染

  可以访问其它函数的私有变量

闭包的缺点

  耗费资源,有可能会造成内存溢出。


41.继承的几种方式

1.普通继承

2.call继承 : 目的是为了改变父类的this指向

3.apply继承 : 目的是为了改变父类的this指向

4.原型式(原型链):原理==将父类的实例对象赋值给子类的原型对象

5.组合继承

    //原型式+call/apply

6.寄生组合继承。

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

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,770评论 0 38
  • 面试题按类型来分,主要涉及到“技术”与“非技术”两大类,今天我们主要讨论的是“技术类”,在这个大类别下涉及到的子类...
    simple_50a1阅读 2,438评论 1 56
  • Java基础面试 Java基础面试... 1 1. Java基础知识... 5 1.1. Java源程序的扩展名是...
    来着何人阅读 1,178评论 0 1
  • Python语言特性 1 Python的函数参数传递 看两个如下例子,分析运行结果: 代码一: a = 1 def...
    时光清浅03阅读 482评论 0 0
  • About Creating Today I waste my life Tomorrow I change my...
    TruakeStudio阅读 284评论 0 1