常见的一些面试题(三)
作者:互联网
一、选择题
原生JS创建元素的方法是什么?(A)
- document.createElement
- document.createTextNode
- document.getElementById
- document.getElementByTagName
二、多选题
1.原生JS中绑定事件的方法有哪些(AD)
A.addEventListener
B. createElement
C. querySelector
D. attachEvent
2.原生JS中异步代码有哪些?(AD)
A.定时器
B.构造函数实例化对象
C.for循环
D.事件
三、简答题
1.闭包的理解,特点,写一个闭包的代码?
概念:可以访问其他函数内部变量的函数(函数里面套函数,内部函数访问外部函数的变量)
特点:闭包中使用的变量/函数会一直存储在内存中,类似全局变量,避免全局污染,每次调用之后形成一个新的局部作用域
缺点:可能会造成内存泄漏,闭包不用的时候,手动释放,数据大量缓存,导致内存浪费,不能垃圾回收机制
代码:
function out() {
var a = 10;
function inner() {
console.log(a++)
}
return inner;
};
2.js有哪些对象?
1.原生对象/本地对象:String,Boolean,Number,Object,Array,Function,RegExp,Error,Date
2.宿主对象:BOM,DOM
3.内置对象:Global,Math
4.全局对象:Window
3.如果ul中有一万个li 给每一个li添加点击事件 点击打印张三
事件委托实现
//1.获取元素
var ul = document.querySelecter('ul');
console.log(ul);
//2.添加事件
ul.οnclick=function(){
//3.获取触发源
var tar = event.target || event.srcElement;
//4.判断如果节点名称是li 打印张三
if(tar.nodeName =='LI'){
console.log('张三');
}
}
4 .写出数学对象中含哪些方法以及对应含义解释
Math对象:
1.PI:π
2.floor:向下取整
3.ceil:向下取整
4.round:四舍五入
5.abs:绝对值
6.pow:幂次方
7.sqrt:开根号
8.random:0-1之间的随机数
9.random()*数:0-数之间的随机数
10.random()*(y-x)+x:区间(x,y)的随机数
11.max:最大值
12.min:最小值
5.封装一个可以获取元素的非行间样式函数
function getStyle(ele,attr){
if(window.getComputedStyle){
return getComputedStyle(ele)[attr]
}else{
return ele.currentStyle[attr]
}
}
//调用
getStyle(img,"width")
6.什么是数组的深浅拷贝?举例说明。
浅拷贝: 指内存中地址的赋值, 存在一改全改的问题
var arr = [1,2,3,4];
var brr = arr;
console.log(arr, brr);
arr[4] = 10;
console.log(arr, brr); // [1,2,3,4,10] [1,2,3,4,10]
深拷贝: 再划分一块区域, 把每个数据在对应的位置重新存储的过程
var crr = ['a', 'b', 'c'];
var drr = []; // 划分区域
// 每个crr的数据存储到drr中
for(var i = 0; i < crr.length; i++){
// drr的下标和crr应该是一样的
drr[i] = crr[i];
}
console.log(crr, drr);
crr[3] = 'fffff';
console.log(crr, drr); // ?["a", "b", "c", "fffff"] ["a", "b", "c"]
三、实操题
有这样一个字符串'http://item.taobao.com/item.html?a=1&b=2&c=&d=xxx&e',要求转化成{‘a’:1,’b’:2,’c’:,’d’:xxx,’e’:undefined}
方法一:
var str= 'http://item.taobao.com/item.html?a=1&b=2&c=&d=xxx&e';
//将字符串分割成两部分 取下标为1 的一部分
var arr = str.split('?')[1].split('&');
var obj = {}
for(var i =0;i<arr.length;i++){
obj(arr[i])
}
方法二:
var str = "http://item.taobao.com/item.html?a=1&b=2&c=&d=xxx&e";
var json = {};
if(str.indexOf('?')!=-1){
var str1 = str.substring(str.indexOf('?')+1);
var arr = str1.split('&') //["a=1", "b=2", "c=", "d=xxx", "e"]
for(var i = 0; i < arr.length;i++){
var arr1 = arr[i].split('=');
json[arr1[0]] = arr1[1]
}
}
console.log(json);
标签:crr,面试题,console,log,常见,arr,item,var,一些 来源: https://blog.csdn.net/qq_48294048/article/details/120571722