美文网首页
前端笔记

前端笔记

作者: leyou319 | 来源:发表于2018-01-01 17:47 被阅读0次
    • 行内元素有哪些?块级元素有哪些? 空(void)元素有那些?

    行内元素有:a b span img input select strong
    块级元素有:div ul ol li dl dt dd h1 h2 h3 h4…p
    常见的空元素:br hr link meta

    • 常见的浏览器内核有哪些?

    Trident内核 、 Gecko内核、Webkit

    • html5有哪些新特性?

    HTML5 现在已经不是 SGML 的子集,主要是关于图像,位置,存储,多任务等功能的增加。
    绘画 canvas;
    用于媒介回放的 video 和 audio 元素;
    本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失;
    sessionStorage 的数据在浏览器关闭后自动删除;
    语意化更好的内容元素,比如 article、footer、header、nav、section;
    表单控件,calendar、date、time、email、url、search;
    新的技术webworker, websocket, Geolocation;

    • cookies,sessionStorage 和 localStorage 的区别?

    cookie是网站为了标示用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。
    sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。
    存储大小:
    cookie数据大小不能超过4k。
    sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。
    有期时间:
    localStorage:存储持久数据,浏览器关闭后数据不丢失除非主动删除数据;
    sessionStorage:数据在当前浏览器窗口关闭后自动删除。
    cookie:设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭

    • js的基本数据类型

    Undefined、Null、Boolean、Number、String

    • js有哪些内置对象?

    Object 是 JavaScript 中所有对象的父对象
    数据封装类对象:Object、Array、Boolean、Number 和 String
    其他对象:Function、Arguments、Math、Date、RegExp、Error

    • JavaScript有几种类型的值?

    栈:原始数据类型(Undefined,Null,Boolean,Number、String)
    堆:引用数据类型(对象、数组和函数)
    两种类型的区别是:存储位置不同;
    原始数据类型直接存储在栈(stack)中的简单数据段,占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储;
    引用数据类型存储在堆(heap)中的对象,占据空间大、大小不固定。如果存储在栈中,将会影响程序运行的性能;引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体

    • Javascript作用链域?

    全局函数无法查看局部函数的内部细节,但局部函数可以查看其上层的函数细节,直至全局细节。
    当需要从局部函数查找某一属性或方法时,如果当前作用域没有找到,就会上溯到上层作用域查找, 直至全局函数,这种组织形式就是作用域链。

    • 谈谈This对象的理解。

    this总是指向函数的直接调用者(而非间接调用者);
    如果有new关键字,this指向new出来的那个对象;
    在事件中,this指向触发这个事件的对象,特殊的是,IE中的attachEvent中的this总是指向全局对象Window;

    • null,undefined 的区别?

    null:表示一个对象是“没有值”的值,也就是值为“空”;
    undefined:表示一个变量声明了没有初始化(赋值);
    undefined不是一个有效的JSON,而null是;
    undefined的类型(typeof)是undefined;
    null的类型(typeof)是object;

    • new操作符具体干了什么呢?
    1、创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型。
    2、属性和方法被加入到 this 引用的对象中。
    3、新创建的对象由 this 所引用,并且最后隐式的返回 this 。
    var obj  = {};
     obj.__proto__ = Base.prototype;
     Base.call(obj);
    
    • Ajax 解决浏览器缓存问题?

    1、在ajax发送请求前加上 anyAjaxObj.setRequestHeader("If-Modified-Since","0")。
    2、在ajax发送请求前加上 anyAjaxObj.setRequestHeader("Cache-Control","no-cache")。
    3、在URL后面加上一个随机数: "fresh=" + Math.random();

    • 如何解决跨域问题?

    jsonp、 服务器上设置代理页面window.name、window.postMessage

    • 你有用过哪些前端性能优化的方法?

    (1) 减少http请求次数:CSS Sprites, JS、CSS源码压缩、图片大小控制合适;网页Gzip,CDN托管,data缓存 ,图片服务器。
    (2) 前端模板 JS+数据,减少由于HTML标签导致的带宽浪费,前端用变量保存AJAX请求结果,每次操作本地变量,不用请求,减少请求次数
    (3) 用innerHTML代替DOM操作,减少DOM操作次数,优化javascript性能。
    (4) 当需要设置的样式很多时设置className而不是直接操作style。
    (5) 少用全局变量、缓存DOM节点查找的结果。减少IO读取操作。
    (6) 避免使用CSS Expression(css表达式)又称Dynamic properties(动态属性)。
    (7) 图片预加载,将样式表放在顶部,将脚本放在底部 加上时间戳。
    (8) 避免在页面的主体布局中使用table,table要等其中的内容完全下载之后才会显示出来,显示比div+css布局慢。
    对普通的网站有一个统一的思路,就是尽量向前端优化、减少数据库操作、减少磁盘IO。向前端优化指的是,在不影响功能和体验的情况下,能在浏览器执行的不要在服务端执行,能在缓存服务器上直接返回的不要到应用服务器,程序能直接取得的结果不要到外部取得,本机内能取得的数据不要到远程取,内存能取到的不要到磁盘取,缓存中有的不要去数据库查询。减少数据库操作指减少更新次数、缓存结果减少查询次数、将数据库执行的操作尽可能的让你的程序完成(例如join查询),减少磁盘IO指尽量不使用文件系统作为缓存、减少读写文件次数等。程序优化永远要优化慢的部分,换语言是无法“优化”的。

    相关文章

      网友评论

          本文标题:前端笔记

          本文链接:https://www.haomeiwen.com/subject/cvytnxtx.html