JS基础整理面试题
1、DOM和BOM的区别
DOM:
document object model
;文档对象模型,提供操作页面元素的方法和属性
BOM:browser object model
;浏览器对象模型,提供一些属性和方法可以操作浏览器
2、JS有几种引入方式
1、行内式 直接在标签中写js代码
2、内嵌式 可以有多个script标签,从上到下
3、外联式 直接导入script标签,相对路径
4、导入式 import
3、innerHTML 和innerText : 区别
innerHTML 可以识别标签;
innerText : 不能识别标签;会把所有的东西当作文本;
4、基本数据类型和引用数据类型的区别?
基本数据类型存储到栈内存中,引用数据类型存储到堆内存中
基本数据类型操作值的,引用数据类型操作的是空间地址;
5、基本数据类型有哪些?
number(数字) string(字符串) boolean(布尔) null undefined;
6、引用数据类型都有哪些?
对象数据类型:
- 普通的对象、数组 、正则 、Date的实例、Math…
函数数据类型- 普通函数、类;
7、其他数据类型转布尔类型是false有且只有哪些?
0 、 “” 、 NaN 、null 、undefined
8、逻辑运算符:与、或、非
|| : 只要其中有一个为true,整体结果是true;
&& : 只要有一个是false,整体结果是false;
!:取反 (比较:转布尔,在取反)
9、null和undefined的区别?
typeof null –> “object”; 空对象指针;
null 表示现在没有,但是以后可能会有;
undefined :现在没有,以后也不能有;
undefined是访问一个未初始化的变量时返回的值,而null是访问一个尚未存在的对象时所返回的值。因此,可以把undefined看作是空的变量
,而null看作是空的对象
10、常见的null的情况
1.通过ID获取元素,如果ID名字不存在,那么返回null;
2.通过正则进行捕获时,如果没有捕获到内容,那么结果是null;
3.在清空对象,销毁堆内存时,给对象赋值时,赋值为null;
11、常见的undefined的情况
1.当获取对象属性名对应的属性值时如果属性名不存在,那么返回值是undefined;
2.函数的形参如果没有实参赋
值,在函数中默认存储undefined
3.如果函数没有return,那么函数的返回值是undefined;
4.如果变量只声明,没有赋值,那么默认存储也是undefined;
12、对象的定义
1.首先会开辟一个新的空间地址;空间地址是16进制;0-9a-f;
2.把键值对存储到当前这个堆内存下;
3.把这个空间地址给了对象名;(函数定义同上,把函数体中的代码当做字符串存储到堆内存)
13、JS四种检测
1、typeOf:只能检测基本数据类型
2、instanceOf:检测当前实例是否属于某个类的方法
3、检测当前实例的构造函数
4、Object.prototype.toString.call([]); 最准确的方式;
14、continue和break的区别
continue; 结束本轮循环;
break: 结束整个循环;
15、for…in..和for…of..的区别?
for in 遍历循环对象
- 同时
for in也可以遍历数组
,但是会出现以下问题
1、index索引为字符串型数字,不能直接进行几何运算
2、遍历顺序有可能不是按照实际数组的内部顺序
3、使用for in会遍历数组所有的可枚举属性,包括原型。
for in遍历的是数组的索引(即键名),而for of遍历的是数组元素值。
for of 遍历循环数组
- for of遍历的只是数组内的元素,而不包括数组的原型属性method和索引name
16、什么是函数的封装?
把实现相同功能的代码放到一个函数体中,当想实现这个功能时,直接执行这个函数即可;减少了的冗余;高内聚,低耦合
17、堆栈内存
当浏览器加载页面时,会形成两个虚拟的内存;一个栈内存,堆内存;
栈内存:
- 1) 提供代码的运行环境;
- 2) 存储基本数据类型;
堆内存:
存储引用数据类型
;
18、函数的执行过程
- 1.首先会形成一个私有的作用域
- 2.形参赋值
- 3.变量提升
- 4.代码从上到下运行;
- 5.作用域的销毁;
在函数执行时,函数体中可以找到函数外面的变量;但是函数外面不能访问里面的变量;
19、闭包
当函数执行时,首先会形成一个私有的作用域,这个私有作用域保护了里面的私有变量不受外界的干扰;这种机制--> "闭包";
20、数据类型之间的比较
NaN 和自己都不相等;
数据类型比较的规律对象==对象
: 比较的是空间地址对象==字符串
对象默认调用toString方法,先转字符串,然后再进行比较对象==布尔
: 对象先转字符串,再转数字;布尔直接转数字;对象== 数字
: 对象先调用toString转换成字符串,然后再转number;布尔== 数字
: 布尔转数字;字符串== 数字
: 字符串转数字;布尔== 字符串
: 布尔转数字,字符串也转数字,然后进行比较;
null == undefined : true;
null 和 undefined 和其他数据类型比较都是false;
21、arguments 类数组对象
任意数求和
22、原生JS选项卡片段
23、Number的方法
isNaN
: 强制转换成number,在判断Number
:将其他数据类型的值强制转换成number类型;parseInt
:经常用于字符串提取数字的方法;parseFloat
:和parseInt 用法一样;区别是多识别一位小数点toFixed
: 保留小数点位数的方法;返回值是一个字符串;
24、字符串的方法(13个)
toUpperCase
: 把小写字母转成大写toLowerCase
把大写转小写charAt
: 通过索引获取字符charCodeAt
: 通过索引获取对应字符的Unicode编码;substr
: 截取 substr(m,n) 从索引m开始,截取n个字符;substring
: substring(m,n) :从索引m开始,截取到索引n,不包含n; (不支持负数)slice(m,n)
: substring; 从索引m开始,截取到索引n,不包含n (支持负数)indexOf
: 检测字符在字符串中第一次出现的索引位置;lastIndexOf
: 检测字符在字符串中最后一次出现的索引位置;split
: 把字符串按照特定的字符分隔数组中的每一项;replace
:替换;原有字符串不变;用新字符替换旧的字符concat
: 拼接trim
: 去空格 : 去除字符串中左右的空格;
25、字符串的运算
- * /
: 会先把字符串转换成数字,然后再进行计算
- 任何数字和NaN 计算,结果都是NaN;
- 任何数字和undefined运算,得到也是NaN;
+
: 字符串拼接;
- [] : 空数组在进行拼接时,会默认调用toString转换成空字符串;然后拼接;
26、数组的方法(15个)
push
:向数组末尾新增一项;可以传多个;pop
: 删除数组的最后一项;不需要传参数;unshift
:向数组开头新增一项;需要传参数;shift
:删除数组的第一项;不需要传参
sort
:数组的排序reverse
:将数组颠倒
原有数组发生改变;
concat
:数组的拼接join
:数组的连接indexOf
:第一次出现的索引位置lastIndexOf
:最后一次出现的索引位置map
:数组的遍历和映射forEach
:遍历数组toString
:转字符串
原有数组不发生改变;
slice
:数组的截取
slice(m,n): 从数组索引m开始,截取到索引n,但是不包含n;[前包后不包]
slice(m) : 从索引m开始,截取到末尾;
slice():数组的克隆 slice(0);
原有数组不发生改变;
splice
:删除数组中的某几项
splice(m,n): 从索引开始,删除n个
splice(m) : 从索引m开始删除到末尾;
splice(0):
splice(m,x,n);替换从索引m开始,删除x个,用n替换;
原有数组发生改变
27、获取元素的方法
document.getElementById
:通过ID名来获取元素document.getElementsByTagName
: 通过标签名来获取元素document.getElementsByClassName()
; 类数组集合;document.getElementsByName
;通过name属性来获取元素;document.documentElement
获取当前的html
body :获取页面的body元素;document.querySelector()
;如果是id名加#,如果是class名加.document.querySelectorAll()
;获取所有的元素
28、DOM四种类型的节点
TYPE | nodeType | nodeName | nodeValue |
元素节点 | 1 | 大写的标签名 | null |
文本节点 | 3 | text | 文本内容 |
注释节点 | 8 | comment | 注释内容 |
document | 9 | document | null |
空格和换行都是文本节点;
29、DOM节点的属性
childNodes
: 获取当前元素所有的子节点;children
: 获取当前元素的子元素节点;firstChild
: 获取第一子节点;lastChild
:获取最后一个子节点previousSibling
: 获取上一个哥哥节点nextSibling
: 获取下一个弟弟节点parentNode
: 获取当前元素的父亲节点;
30、封装previousSibling
31、动态操作DOM的方法
document.createElement
;创建元素appendChild
: 向元素的末尾添加子节点;removeChild
: 删除子节点;replaceChild
: 替换节点;insertBefore
:把元素节点插入某个节点的前面cloneNode
: 复制节点;set/get/remove Attribute
: 设置自定义行内属性;
32、Math的方法
Math.abs()
: 取绝对值;Math.floor()
: 向下取整Math.ceil()
: 向上取整Math.max()
: 取最大值Math.min()
: 取一组数的最小值Math.random()
取随机数,取值范围[0,1)Math.round()
: 四舍五入取整
取m-n之间的随机整数:Math.round(Math.random()*(n-m)+m)
Math.pow()
: 取幂次方Math.sqrt()
: 开平方;
33、Date的实例
34、数组的去重
1、indexOf: 判断当前项在数组中是否存在,不存在返回-1;
2、对象的属性名不能重复;
3、转换成数组
35、函数的递归
递归: 针对的是函数; 是JS中一种重要的思想;
函数: 分为定义和执行
函数递归: 在函数体内部,调用函数自己本身,让其执行;这就是递归;
36、求1-100之间是3倍数的和
% : 取模;取余数
37、数组的插入排序
38、数组的冒泡排序
39、数组的快速排序
快速排序快速排序的原理
: 首先取原有数组中的中间项;接下来循环原有的数组每一项,和中间项进行比较,如果比中间项的小的放在左边的数组中,比中间项大的放在右边的数组中;然后再对左边和右边数组进行刚才的操作;最后把所有的小数组和中间项串在一起就是排好的数组;
40、随机验证码
41、设置定时器
1) setTimeout()
2) setInterval()
42、清除定时器
1) clearTimeout()
2) setInterval()
JS基础整理面试题的更多相关文章
- js基础整理总结
变量和变量作用域 变量和函数声明提升定义 Var a=100; Function test(){ 这时候由于变量声明提升,a变量已经声明,值为undefined Console.log(a); Var ...
- JS基础整理
使用JS的三种方式 1.直接在html标签中,使用事件属性,调用js代码 <button onclick="alert('弹框')">弹框!</button> ...
- SVG.js 基础图形绘制整理(二)
一.折线 var draw = SVG('svg1').size(300, 300); //画折线 //使用字符串点 // var polyline=draw.polyline('0,0 100,50 ...
- 前端工程师面试问题归纳(一、问答类html/css/js基础)
一.参考资源 1.前端面试题及答案整理(一) 2.2017年前端面试题整理汇总100题 3.2018最新Web前端经典面试试题及答案 4.[javascript常见面试题]常见前端面试题及答案 5.W ...
- Three.js基础
Three.js基础探寻一 Three.js基础探寻一 1.webGL 一种网络标准,定义了一些较底层的图形接口. 2.Three.js 一个3Djs库,webGL开源框架中比较优秀的一个.除了w ...
- js基础进阶--图片上传时实现本地预览功能的原理
欢迎访问我的个人博客:http://www.xiaolongwu.cn 前言 最近在项目上加一个图片裁剪上传的功能,用的是cropper插件,注意到选择本地图片后就会有预览效果,这里整理一下这种预览效 ...
- 前端面试题目汇总摘录(JS 基础篇)
JS 基础 JavaScript 的 typeof 返回那些数据类型 object number function boolean undefined string typeof null; // o ...
- Three.js基础探寻一
1.webGL 一种网络标准,定义了一些较底层的图形接口. 2.Three.js 一个3Djs库,webGL开源框架中比较优秀的一个.除了webGL以外,Three.js还提供了基于Canvas.SV ...
- Three.js基础探寻二——正交投影照相机
本篇主要介绍照相机中的正交投影照相机. 第一篇传送门:Three.js基础探寻一 1.照相机 图形学中的照相机定义了三维空间到二维屏幕的投影方式. 针对投影方式照相机分为正交投影照相机和透视投影照相机 ...
随机推荐
- redis集群结构图
在JAVA编程时,使用哨兵池获取jedis来进行数据的操作,哨兵对对集群进行监视,当主节点宕掉时,会自动将子一个子节点升级为主节点,原来的主节点上线时会自动变为从节点,主节点的变化,对于使用哨兵池方式 ...
- html 文字少则居中多则居左
<!DOCTYPE html> <html> <head> <link rel="stylesheet" href="index ...
- 24 类:组合 继承 super关键字 面向对象的三大性
组合 组合:自定义类的对象作为另外一个类的属性 class Teacher: def __init__(self, name, age): self.name = name self.age = ag ...
- adi i2s 提供的axi_lite接口说明
总共定义了4个寄存器,位宽32位,也就是 偏移地址*4以下是PS写数据when 0 => I2S_RESET_REG <= wr_data; when 1 => I2S_CONTRO ...
- C++智能指针剖析(下)boost::shared_ptr&其他
1. boost::shared_ptr 前面我已经讲解了两个比较简单的智能指针,它们都有各自的优缺点.由于 boost::scoped_ptr 独享所有权,当我们真真需要复制智能指针时,需求便满足不 ...
- MyCat分片规则--笔记(二)
概述 myCat实现分库分表的策略,对数据量的处理带来很大的便利,这里主要整理下MyCat的使用以及常用路由算法,针对MyCat里面的事务.集群后续再做整理:另外内容整理,不免会参考技术大牛的博客,内 ...
- IBOS二次开发之视图创建(PHP技术)
在 views 文件夹,我们创建一个跟控制器名称一样的文件夹list,新建一个index.php的视图文件. 我们讨论过多次,最后决定IBOS的视图机制还是以高效为主.因此我们没有使用模板,而是直接使 ...
- bs4解析库
beautifulsoup4 bs4解析库是灵活又方便的网页解析库,处理高效,支持多种解析器.利用它不用编写正则表达式即可方便地实现网页的提取 要解析的html标签 from bs4 import B ...
- MySQL系列
目录: 一.初识数据库 二.库相关操作 三.表相关操作 四.记录相关操作 五.数据备份.pymysql模块 六.视图.触发器.事务.存储过程.函数 七.ORM框架SQLAlchemy 八.索引原理与慢 ...
- Win10家庭版WindowsUpdate属性为灰色
一般的取消Windows更新只需要打开任务管理器,点击服务 然后点击左下角的打开服务 找到WindowsUpdate,右键属性 按照正常的电脑只要在启动类型中选择禁用,然后在恢复里的第一次操作选择无操 ...