前端常见知识总结

前端常见知识总结

1.盒模型

盒模型由margin、border、padding、content组成。盒模型有两种标准,一个是标准模型,一个是IE模型。标准盒模型的宽高只是内容(content)的宽高,而在IE中盒模型的宽高为边框(border)+填充(padding)+内容(content)的总宽高。

2.sessionStorage、localStorage和cookie的区别

共同点:都是保存在浏览器端、且同源的 
区别: 
1、cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递,而sessionStorage和localStorage不会自动把数据发送给服务器,仅在本地保存。cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下 
2、存储大小限制也不同,cookie数据不能超过4K,同时因为每次http请求都会携带cookie、所以cookie只适合保存很小的数据,如会话标识。sessionStorage和localStorage虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大 
3、数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭之前有效;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie:只在设置的cookie过期时间之前有效,即使窗口关闭或浏览器关闭 
4、作用域不同,sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;localstorage在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的 

3.Html标签的语义化

所谓标签语义化,就是指标签的含义。标签语义化的目的就是对搜索引擎友好,有了良好的结构和语义我们的网页内容便自然容易被搜索引擎抓取,这种符合搜索引擎搜索规则的做法,网站的推广便可以省下不少的功夫,而且可维护性更高,因为结构清晰,十分易于阅读。在

4.<b>、<em>和<strong>

<b>标签语义为“加粗”

<em>标签语义为“强调”

<strong>标签语义为“更强烈的强调” 而且em 默认用斜体表示,strong 用粗体表示。

当我们知道了这三个标签的语义时,做SEO时就好决定用哪个来强调重要的关键字了,强调用<em>和<strong>,纯粹加粗用<b>。

5.var与let、const的区别

5.1、var声明的变量会挂载在window上,而let和const声明的变量不会:

var a = 1;
console.log(a,window.a);    // 1 1

let b = 1;
console.log(b,window.b);    // 1 undefined

const c = 1;
console.log(c,window.c);    // 1 undefined

5.2、var声明变量存在变量提升,let和const不存在变量提升

console.log(a); // undefined
var a = 1;

console.log(b); //报错 b is not defined
let b = 1;

console.log(c); //报错 c is not defined
const c = 1;

5.3、let和const声明形成块作用域

if(true){
    var a = 100;
    let b = 10;
    const c = 1;
}
console.log(a);//100
console.log(b);//报错 b is not defined
console.log(c);//报错 c is not defined

5.4、同一作用域下let和const不能声明同名变量,而var可以

var a = 100;
console.log(a); // 100
var a = 10;
console.log(a); // 10

let b = 100;
let b = 10;
//报错:Identifier 'b' has already been declared

const c = 1;
const c = 10;
//报错:Identifier 'c' has already been declared

5.5、暂存死区

var a = 100;

if(1){
    a = 10;
    //在当前块作用域中存在a使用let/const声明的情况下,给a赋值10时,只会在当前作用域找变量a,
    // 而这时,还未到声明时候,所以控制台Error:a is not defined
    let a = 1;
}

5.6、const

/*
*   1、一旦声明必须赋值,不能使用null占位。
*   2、声明后不能再修改
*   3、如果声明的是复合类型数据,可以修改其属性
*
*/

const a = 100; 

const list = [];
list[0] = 10;
console.log(list);  // [10]

const obj = {a:100};
obj.name = 'apple';
obj.a = 10000;
console.log(obj);  // {a:10000,name:'apple'}

6.flex弹性布局

参考http://www.runoob.com/w3cnote/flex-grammar.html


7.css选择器有哪些?

ID选择器(#id{})、类选择器(.class{})、元素选择器(div、p、h1)、后代选择器(h1 span{})、相邻选择器(h1+p{})、子元素选择器(td > p{})

8.跨域解决方案

参考https://segmentfault.com/a/1190000011145364

8.1、 通过jsonp跨域

8.2、 document.domain + iframe跨域

8.3、 location.hash + iframe

8.4、 window.name + iframe跨域

8.5、 postMessage跨域

8.6、 跨域资源共享(CORS)

8.7、 nginx代理跨域

8.8、 nodejs中间件代理跨域

8.9、 WebSocket协议跨域

9.获取两个数之间的随机数,取整

function getRandomNumberByRange(start, end) {
    return Math.floor(Math.random() * (end - start) + start);//取整
}
getRandomNumberByRange(0,100);

10.position定位都有哪些属性?

默认(static,此时top、right、bottom、left不起作用)、相对定位(relative)、绝对定位(absolute)、固定定位(fixed)、inherit( 继承父元素)

11.前端页面优化

11.1、减少http请求,合理设置 HTTP缓存

11.2、使用浏览器缓存

11.3、压缩文件(css、js)

11.4、CSS放在页面最上部,javascript放在页面最下面(浏览器在加载javascript后立即执行,有可能会阻塞整个页面,造成页面显示缓慢,因此javascript最好放在页面最下面)

11.5、减少操作dom次数

11.6、CSS选择符优化,避免写很长的子选择器(#id .class p a { color: #444; })

11.7、雪碧图(合并所用到的一些固定小图标)

11.8、减少Cookie传输

12.前端SEO优化

12.1、优化html标签,合理使用div、p、table、a,避免全部使用div

12.2、定义关键词、网站描述

< meta name="keywords" content="关键词1,关键词2" />

< meta name="description" content="描述1,描述2" />

12.3、图片<img />添加alt属性,  <img src="" alt="图片描述" />

(1)当图片未成功显示时候,仍可以显示文本,用户也可以大致了解图片主题

(2)当图片成功显示的时候,鼠标以上图片,可显示图片描述

(3)可解决网速慢、src引用错误、浏览器禁用图像、用户使用屏幕阅读器等情况

12.4、图片<img /> 要定义大小、不然会造成页面重新渲染,影响加载速度, <img src="" width=" "  height="" />

12.5、链接采用绝对路径,减少服务器的响应时间,<a href="www.taobao.com">首页</a>

12.6、导航栏的层级数不宜太深

12.7、页面跳转尽量使用<a href="#"></a>,不要使用<div onclick=" "></div>

13.Math.round(),Math.ceil(),Math.floor()的区别

//ceil():向上取整

Math.ceil(10.3)//返回11
Math.ceil(10.6)//返回11
Math.ceil(10.0)// 返回10
 
//floor():向下取整

Math.floor(10.3)// 返回10
Math.floor(10.6)//返回10
Math.floor(10.0)//返回10
 
//round():四舍五入取整

Math.round(10.3)// 返回10
Math.round(10.6)//返回11
Math.round(10.0)//返回10

猜你喜欢

转载自blog.csdn.net/weixin_40687883/article/details/86984734
今日推荐