JAVASCRIPT基础
1.原始数据的5种类型
Number/String/Boolean/undefined/null
2.JS的内置对象
Number/String/Array/Object/Boolean
3、未声明和未定义的变量
未声明:程序中不存在的变量且未声明的变量;
未定义:在程序中申明了但是没有给予任何值得变量。
4、js定时器
定时器用于在设定的时间执行一段代码,或者在给定的时间间隔内重复该代码。这通过使用函数setTimeout,setInterval和clearInterval来完成。
- setTimeout(function,delay)函数用于启动在所述延迟之后调用特定功能的定时器。
- setInterval(function,delay)函数用于在提到的延迟中重复执行给定的功能,只有在取消时才停止。
clearInterval(id)函数指示定时器停止。
5、== 和 ===的区别
==:数值相等,==数值和类型相等
6、在JavaScript中使用innerHTML的缺点是什么?
如果在JavaScript中使用innerHTML,缺点是:内容随处可见;不能像“追加到innerHTML”一样使用;即使你使用+ = like“innerHTML = innerHTML +‘html’”旧的内容仍然会被html替换;整个innerHTML内容被重新解析并构建成元素,因此它的速度要慢得多;innerHTML不提供验证,因此我们可能会在文档中插入有效的和破坏性的HTML并将其中断。
7、数组去重的方法
- 方法一:
function unique(arr){
var result=[]
for(var i=0;i<arr.length;i++){
if(result.indexOf(arr[i]==-1)){
result.push(arr[i]);
}
}
return resule;
}
- 方法二:
arr.from(new Set(arr))
8、冒泡排序
- 方法一:
function sort(arr){
if(arr.length<1){
return arr;
}
for(var i=0;i<arr.length-1;i++){
for(var j=0;j<arr.length-i;j++){
if(arr[j]>arr[j+1]){
var tep=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tep;
}
}
}
return arr;
}
- 方法二:
function sort(arr){
if(arr.length<1){
return arr;
}
var left=[];
var right=[];
var mid=[arr.[0]];
for(var i=1;i<arr.length;i++){
if(arr[i]<mid[0]){
left.push(arr[i]);
}else{
right.push(arr[i])
}
}
return quickSort(left).concat(mid.concat(quickSort(right)));
}
9、typeOf与instanceOf的区别
- 相同点:判断变量是否为空或者变量的类型;
- 不同点
- typeOf只能返回:number/string/boolean/function/undefined,对于arr、null来说一律返回object.
- instabceOf判断一个对象是否属于某个对象的实例。
10、.call和.apply的区别是什么?
all(thisObj,Object) ,apply(thisObj,[argArray])
对于apply和call两者在作用上是相同的,但两者在参数上有以下区别:
对于第一个参数意义都一样,但对第二个参数:apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。如 func.call(func1,var1,var2,var3)对应的apply写法为:func.apply(func1,[var1,var2,var3])同时使用apply的好处是可以直接将当前函数的arguments对象作为apply的第二个参数传入。
11、描述以下变量的区别:null,undefined或undeclared?
null是一个表示”无”的对象,转为数值时为0;undefined是一个表示”无”的原始值,转为数值时为NaN。
12、数组去重
- 数组对象去重
const newArray =[
{ name: "huahua", age: "12" },
{ name: "pangpang", age: "14"},
{ name: "xiaofang", age: "16" },
{ name: "chenchen", age: "13" },
{ name: "huahua", age: "19" },]
let obj = {}
// 数组去重
newArray = newArray .reduce(function(item, next) {
obj[next.name] ? '' : obj[next.name] = true && item.push(next);
return item;
}, []);
13、js 改变原数组的方法和不改变原数组的方法
- 改变原数组
1、shift :将第一个元素删除并且返回删除元素,空即为:undefined
2、unshift:向数组开头添加元素,并且返回改变之后的数组
3、pop:删除最后一个元素并且返回删除之后的数组
4、push:向数组末尾添加元素,并且返回添加完之后的数据
5:reverse:颠倒数组顺序
6:sort:对数组排序
7:splice(start,length,item)删,增,替换数组元素,返回被删除的数组,无删除则不返回
-不改变原数组
1:concat:连接多个数组,原数组不变,必须得拿变量接
2:join:将数组中所有元素作为分隔符放入一个字符
3:slice:slice(start,end),返回选定元素
4:map/filter/forEatch/some/every等不改变原数组