JS和ES6部分
1. map和foreach的区别
map():创建一个新的数组,其中每一个元素由调用数组中的每一个元素执行提供的函数得来。(有返回值,会得到一个新的数组)
forEach():针对每一个元素执行提供的函数(没有返回值,直接返回一个undefined)
2.map和Object的区别
key值的不同
map():可以是数据类型,也就是说可以用一个 Object 来当做一个Map元素的 key。
object():只能是整数,字符串或者是 symbol
3.var arr = [[1, 3, 2, 1],[5, 3, 4, 8, 5, 6, 5],[6, 2, 8, 9, [4, 11, 15, 8, 9, 12, [12, 13, [10], 14]]], 16,'e'],数据扁平化。去重
var newArr = arr.toString().split(',')
let e = newArr.map(Number);
let a = [...new Set(e)]
4.var str = 'daqaghgafkapghjagabgiaowpqwe'遍历字符串,将出现的字符存入到数组中
var obj = {};
for (var i = 0; i < str.length; i++) {
if (!obj[str.charAt(i)]) {
obj[str.charAt(i)] = 1;
} else {
obj[str.charAt(i)]++;
}
}
console.log(obj);
var max = 0;
var charmax;
//遍历数组,找出出现最多的字母出现的次数
for (var key in obj) {
if (obj[key] > max) {
max = obj[key];
charmax = key;
}
}
console.log("出现最多的字符是" + charmax + ",出现了" + max + "次");
5.const arr = [1, 2, 3, 10, 12, 4,4],重小到大排序
使用sort进行排序
let compare1 = function(val1, val2) {
return val1 - val2
}
console.log(arr.sort(compare1));
冒泡排序
for (var i = 0; i < arr.length; i++) {
console.log(i)
for (var j = 0; j < arr.length - i; j++) {
console.log(j)
if (arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
console.log(arr);
6.如何获取url问号后面的参数
使用jq的方式去获取
function GetQueryString(name) {
var url_string = window.location.href;
var url = new URL(url_string);
return url.searchParams.get(name);
}
var id = GetQueryString("id")
vue页面路由方式
this.$route.params.id;或者this.$route.query.id
7.promise与async和await的区别
8.[0,1,0,4,7,0,6] => [0,0,0,1,4,7,6] 如何用代码实现
9.说说你对包闭的理解
10.JS如何实现继承
11.document.ready和onload的区别
JavaScript文档加载完成后会做的两件事情,感觉跟页面的生命周期差不多。
12.定时器有哪两种,有什么不同?
setTimeout() :表示多少秒后再去执行。
setInterval() :以周期性去执行。
追问:setTimeout倒计时为什么会出现误差?
13.如何防止网站被别人使用iframe嵌套,如果项目中a网站iframe嵌套b网站,a和b域名是不一样的,那么a和b网站如何进行通信?
第一个问题:www.cnblogs.com/xiejn/p/119…
第二个问题:segmentfault.com/a/119000001…
14.用过哪些ES6的新特性,说说你的理解
15.如何深度拷贝
反正我是直接JSON.parse(JSON.stringify())的。
16.说说你对DOM和BOM的理解
17.说说你对this指向的理解。call、apply、bind有何区别
this自己去理解吧。
call 方法第一个参数是要绑定给this的值,后面传入的是一个参数列表。当第一个参数为null、undefined的时候,默认指向window。
apply 受两个参数,第一个参数是要绑定给this的值,第二个参数是一个参数数组。当第一个参数为null、undefined的时候,默认指向window。
bind 一个参数是this的指向,从第二个参数开始是接收的参数列表。区别在于bind方法返回值是函数以及bind接收的参数列表的使用。
18.浏览器缓存有哪些有何区别
19.什么叫事件委托
20.基本类型和引用类型有何不同?分别有哪些?
21.typeof与instanceof区别
typeof只能返回 number,string,undefined,object,boolean,function,symbol类型。
instanceof 运算符用来测试一个对象在其原型链中是否存在一个构造函数的prototype属性。用于判断一个变量是否某个对象的实例。
在判断一个引用类型的变量时会出现一个问题,无论是什么引用类型都是object。这时候就需要instanceof来检测某个对象是不是另一个对象的实例。
相同点:用来判断一个变量是否为空,或者是什么类型的。