1.如何对CSS和Js进行优化
CSS
1.代码去重
2.压缩代码量(很多在线工具)
3.雪碧图压缩
4.CSS文件合并
js
尽可能少声明变量
尽量减少闭包的使用
尽量少使用for in 循环
尽可能少使用dom操作 ->用变量
减少代码重用
代码压缩、文件合并
2.js的typeof返回哪些数据类型?
Function String Number Boolean undefined
Object Symbol
Symbol是ES6新引入的一种数据类型,表示独一无二的值
可以作为属性,可以作为属性在任何对象中,不重复
3.事件绑定和普通事件有什么区别?
事件绑定是可以叠加的
事件只能回收 不精准
事件绑定能精准接触哪个函数
4.兼容浏览器的写法
-webkit- 针对safari,chrome浏览器的内核CSS写法
-moz-针对firefox浏览器的内核CSS写法
-ms-针对ie内核的CSS写法
-o-针对Opera内核的CSS写法
window.navigator.userAgent //检查是哪个浏览器
比如
let ua = window.navigator.userAgent;
if(ua.lastIndexof('Chrome')!=-1){ // 等于-1就是没找到
div1.style.background = 'red';
}
5.ajax请求时,如何解析json数据?
eval
JSON.parse
JSON.stringify
11.ajax请求的时候get和post方式的区别
请求和发送数据的
get 内容都在地址栏里 不安全 大小只有32K
post 内容加密 安全 最高2G
12.三目运算符
var val ="goudan";
console.log("val is" + (val === "goudan")? "goudan":"other");
这道题实际上拆分成这样
if("val is" + (val === "goudan")){
console.log("goudan");
}else{
console.log("other");
}
?前面都是判断体
13.报错问题
报错也分两种 一种是编译性错误 一种是语法错误(即使前面正确有结果也不会显示)
14.数学方法
Math.floor()向下取整
Math.ceil()向上取整
15.call apply bind
都可以改变this的指向
call 和 apply都是可以把函数直接调用
call ->从第二个参数开始就是指的调用函数的形参
apply ->第二个参数开始就是数组
16.闭包是什么,有什么特性,对页面有什么影响
1.子函数使用父函数变量的行为
2.子函数可以延长父函数变量的生命周期
3.可以拓展函数的空间
17.ajax可以跨域么?
ajax不可以跨域,跨域这事后台做决定
18.如何阻止事件冒泡?
stopPropagation();
cancelBubble = true;
17.如何查找节点?添加节点?删除节点?
//查找
document.getElementById()
getElementsByTagName()
getElementsByClassName()
getElementsByName();
querySelector();
querySelectorAll();
children;
parentNode;
firstChild();
lastChild();
nextChild();
//插入
appendChild();
insertBefore();
insertAdjacentElement();
beforeBegin() /放到前面
afterBegin() / 放到后面
beforeEnd
afterEnd
//删除
innerHTML
outerHTML
removeChild()
remove()
18.数组去重
var arr = [1,2,3,4,4,3,2,5]
function removeDb(arr){
var arr2 = [];
for(var i = 0;i
19.编写一个方法查询里面有几个字母
var str ='aabbbcccccc'
String.prototype.returnText=function(){
var json = {};
for(var i = 0;i
20.添加一个东西使其输出hello world
if((function(){
console.log('hello world');
consoloe.log=function(){}
})){
console.log('hello')
}else{
console.log('world');
};
21.cookie,sessinStorage,localeStorage的区别
cookie 是临时储存 4kb
cookie 有时间限制
后者都是 5mb的储存空间,没有时间限制
sessinStorage 关上浏览器就消失了 不通用 第二个页面就调用不了
22.(function(a){
// var a
//var a=100
//var a =function(){}
console.log(a);
var a=10;
function a(){};
}(100));
所以最后输出的是 function a(){}
for(var i =0;i<3;i++){
setTimeout(function(){
console.log(i++)
},0)
}
循环完的时候i是3, 然后再执行3次i++ 所以就是 3 4 5
var z=10;
function foo(){
console.log(z);
}
(function(funArg){
var z =20;
funArg();
})(foo)
//输出10,因为始终没有改变foo函数的指向
// var a;
// var a = function(){}
console.log(typeof a );
var a = 10;
function a(){console.log(1)};
var a = 10;
function b(){
// var a 这里的a把外面的覆盖了
console.log(a);
var a = 20
}
b() // undefined
27.数组的方法
如何判断对象是属于什么的
constructor.name
直接输入Array.prototype就能知道所有方法
28.什么叫对象
1.new出来的都是对象
2.对象都不相等
3.对象都有私有属性
4.对象都有引用机制
29.水平垂直居中的方式
1.绝对定位
2.固定定位(top:0,bottom:0,left:0,right:0,margin:auto)
3.flex布局
30.不用循环,往数组里添加1~100的元素
var arr=[];
var i = 0;
var t = setInterval(()=>{
arr.push(i);
i++;
if(i==100){
clearInterval(t);
}
})
第二种方法
var arr=[],i=0;
function add(){
arr.push(i);
i++;
if(i ==100){
return;
}
add();
}