一些前端开发注意的细节

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<arr.length;i++){
                if(arr2.indexOf(arr[i])!=-1){
              }else{
                    arr2.push[i]
                }
        }
        return arr2;
}

方法二:
const items = new Set([1, 2, 3, 4, 5, 5]); //去重
const array = Array.from(items);  //1.转成数组

19.编写一个方法查询里面有几个字母

var str ='aabbbcccccc'
String.prototype.returnText=function(){
    var json = {};
    for(var i = 0;i<this.length;i++){
    if(json[this[i]]){
          json[this[i]] = json[this[i]+1];
      }
    else{
          json[this[i]] = 1;
      }
};
  for(var i in json){
      console.log(i,json[i]);  
}

};//因为要求是字符串的方法

str.returnText()

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();
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,486评论 1 45
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,197评论 0 3
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,758评论 2 17
  • 之前和人聊天, 发现自己各种基础知识很多都记得不是很清楚了, 所以在这里做一个回顾和总结 Runtime runt...
    阿瑟李阅读 153评论 0 1
  • 我算是疲于应对短信祝福的人,真正的惦记未必是节日中的想起,而是平时生活中的问候,出于礼貌,还是要回复。 所以先放下...
    心源宝贝阅读 159评论 0 1