1.var let const区别
var是ES5语法,let const是ES6语法;
var有变量提升(不会报错,只会打印出undefined)
var和let是变量可以修改,count是常量不可以修改
let和count是块级作用域,var没有
2.typeof能判断哪些类型
undefined、string、number、boolean、symbol [值类型]
object(注意 typeof null === ‘object’) [引用类型instanceof]
function
3.列举强制类型转换和隐式类型转换
强制 parseInt parseFloat Number string toString等(toString转换null undefined会报错)
隐式 +拼接字符串 == === if 逻辑运算等
4.split()和join()的区别
split() 将字符串切割成数组 ‘1-2-3’.split(‘-’)
join() 将数组转换为字符串 [1,2,3].join(‘-’)
5.数组 pop push unshift shift 分别是什么
pop尾部删除 —— 返回删除元素 —— .pop()
push尾部添加 —— 返回length —— .push(要添加的元素)
unshift头部添加 —— 返回length —— .unshitf(要添加的元素)
shift头部删除 —— 返回删除元素 —— .shift()
6.数组slice和splice区别
slice是截取 splice是剪接;
slice是纯函数 splice是非纯函数
7.数组的API有哪些是纯函数(纯函数不改变源数组没有副作用,返回一个数组)
concat数组的拼接 .concat([50,60,70])
slice(start,end)按照数组的下标截取(不包括end)
.map() .filter过滤
8.ajax请求get和post的区别
get一般用于查询操作,post一般用于用户提交操作
get参数拼接在url上,post放在请求体内(数据体积可能更大)
安全性:post易于防止CSRF/XSRF跨站请求伪造
9.闭包是什么?有何特性?有何影响?
特性:①函数嵌套函数
②函数内部可以引用外部的参数和变量
③参数和变量不会被垃圾回收机制回收
好处:避免全局变量的污染,私有成员的存在
缺点:①常驻内存,增加内存使用量 ②使用不当容易造成内存泄漏
应用场景:作为参数被传递,作为返回值被返回
* 自由变量的查找,要在参数定义的地方 而不是执行的地方
10.如何阻止事件冒泡和默认行为
event.stopPropagation() 阻止事件冒泡 (IE:event.cancelBubble = true)
event.preventDefault() 阻止默认行为/事件 (return false)
11.添加、删除、替换、插入到某个节点的方法
新建节点:createElement() //创建一个具体的元素
createTextNode() //创建一个文本节点
添加 appendChild()
移除 removeChild()
替换 replaceChild()
插入 insertBefore()
12.如何减少DOM操作
缓存DOM查询结果
多次DOM操作合并到一次插入
13.解释jsonp原理,为何不是真正的ajax
jsonp是动态创建script标签,回调函数
而ajsx是页面无刷新请求数据操作,通过XMLHttpRequest来实现的
14.document load 和 document ready的区别
1 window.addEventListener(‘load‘, funtion(){ 2 // 页面的全部资源加载完才会执行,包括图片、视频等 3 }) 4 document.addEventListener(‘DOMContentLoaded‘, funtion(){ 5 // DOM渲染完即可执行,此时图片、视频还可能没有加载完(常用) 6 })
15.‘==’和‘===’区别
==会自动转换类型,然后再比较
===不转换类型之前比较,严格相等
使用场景:①只有在 ==null 时用双等,其他一律用===
②这是jQuery源码中的写法,推荐
16.函数声明和函数表达式的区别
函数声明function fn(){…}
函数表达式 const fn = function(){…}
函数声明会再代码执行前预加载,而函数表达式不会
17.new Object()和Object.create()的区别
{}等同于new Object(),原型Object.prototype
Object.create(null) 没有原型
Object.create({…})可指定原型
18.如何用js实现继承
①class继承 ②prototype继承
19.如何捕获js中的异常
1 ①用try-catch手动捕获 2 ②window.onerror = function(message信息, source源码, lineNum行号, colNum, error){ 3 // 第一,对于跨域的js,如CDN的,不会有详细的报错信息 4 // 第二,对于压缩的js,还要配合sourceMap反查到未压缩代码的行、列 5 }
20.什么是JSON
json是一种数据格式,本质是一段字符串
json格式和JS对象结构一致,对JS语言更友好(json现已覆盖大多XML)
window.JSON是一个全局对象:.stringify对象转化json字符串 .parse字符串转换为对象
21.获取当前页面url的参数
传统方式:location.search
新的API:URLSearchParams
1 function query(name){ 2 const search = location.search 3 const p = new URLSearchParams(search) 4 return p.get(name) 5 } 6 query(‘a‘)
22.数组去重一行代码实现
[...new Set()]
原文:https://www.cnblogs.com/guisenbin/p/12335855.html