面试题

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传入的值可以是一个数组,所有concat可以合并出二维数组而splice不可以。

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秒开始计算

你可能感兴趣的:(面试题)