2019年最新面试题集绵


CSS相关问题:
  1、display:none和visibility:hidden的区别?

  2、link 和@import 的区别是?
    (1) link属于HTML标签,而@import是CSS提供的;
    (2) 页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载;
    (3) import只在IE5以上才能识别,而link是HTML标签,无兼容问题; 
    (4) link方式的样式的权重 高于@import的权重.

  3、position的absolute与fixed共同点与不同点
    A:共同点:
     1.改变行内元素的呈现方式,display被置为block;
     2.让元素脱离普通流,不占据空间;3.默认会覆盖到非定位元素上 
    B不同点: absolute的”根元素“是可以设置的,而fixed的”根元素“固定为浏览器窗口。当你滚动网页,fixed元素与浏览器窗口之间的距离是不变的。

 4、介绍一下CSS的盒子模型?
    1)有两种, IE 盒子模型、标准 W3C 盒子模型;IE的content部分包含了 border 和 pading;
    2)盒模型: 内容(content)、填充(padding)、边界(margin)、 边框(border).
 
 5、CSS 选择符有哪些?哪些属性可以继承?优先级算法如何计算? CSS3新增伪类有那些?
    1.id选择器( # myid) 
    2.类选择器(.myclassname) 
    3.标签选择器(div, h1, p) 
    4.相邻选择器(h1 + p) 
    5.子选择器(ul > li) 
    6.后代选择器(li a) 
    7.通配符选择器( * ) 
    8.属性选择器(a[rel = "external"]) 
    9.伪类选择器(a: hover, li:nth-child) 
    * 可继承的样式: font-size font-family color, text-indent; 
    * 不可继承的样式:border padding margin width height ; 
    * 优先级就近原则,同权重情况下样式定义最近者为准;
    * 载入样式以最后载入的定位为准; 
    优先级为: !important > id > class > tag important 比 内联优先级高,但内联比 id 要高 
    CSS3新增伪类举例: p:first-of-type 选择属于其父元素的首个 <p> 元素的每个 <p> 元素。
               p:last-of-type 选择属于其父元素的最后 <p> 元素的每个 <p> 元素。 
               p:only-of-type 选择属于其父元素唯一的 <p> 元素的每个 <p> 元素。 
               p:only-child 选择属于其父元素的唯一子元素的每个 <p> 元素。 
               p:nth-child(2) 选择属于其父元素的第二个子元素的每个 <p> 元素。 
               :enabled :disabled 控制表单控件的禁用状态。 
               :checked 单选框或复选框被选中。
 
 6、列出display的值,说明他们的作用。position的值, relative和absolute分别是相对于谁进行定位的?
    1. block 象块类型元素一样显示。 inline 缺省值。象行内元素类型一样显示。 inline-block 象行内元素一样显示,但其内容象块类型元素一样显示。 list-item 象块类型元素一样显示,并添加样式列表标记。 
    2. *absolute 生成绝对定位的元素,相对于 static 定位以外的第一个祖先元素进行定位。 
       *fixed (老IE不支持) 生成绝对定位的元素,相对于浏览器窗口进行定位。 
       *relative 生成相对定位的元素,相对于其在普通流中的位置进行定位。 
       * static 默认值。没有定位,元素出现在正常的流中 (忽略 top, bottom, left, right z-index 声明)。 
       * inherit 规定从父元素继承 position 属性的值。
 
 7.CSS3有哪些新特性?
    CSS3实现圆角(border-radius),阴影(box-shadow), 对文字加特效(text-shadow、),线性渐变(gradient),旋转(transform) transform:rotate(9deg) scale(0.85,0.90) translate(0px,-30px) skew(-9deg,0deg);//旋转,缩放,定位,倾斜 
    增加了更多的CSS选择器 多背景 rgba 在CSS3中唯一引入的伪元素是::selection. 媒体查询,多栏布局 border-image
 
 8、为什么要初始化CSS样式。
    因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化往往会出现浏览器之间的页面显示差异。 当然,初始化样式会对SEO有一定的影响,但鱼和熊掌不可兼得,但力求影响最小的情况下初始化。
    *最简单的初始化方法就是: * {padding: 0; margin: 0;} 
    (不建议) 淘宝的样式初始化: body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td { margin:0; padding:0; } body, button, input, select, textarea { font:12px/1.5tahoma, arial, \5b8b\4f53; } h1, h2, h3, h4, h5, h6{ font-size:100%; } address, cite, dfn, em, var { font-style:normal; } code, kbd, pre, samp { font-family:couriernew, courier, monospace; } small{ font-size:12px; } ul, ol { list-style:none; } a { text-decoration:none; } a:hover { text-decoration:underline; } sup { vertical-align:text-top; } sub{ vertical-align:text-bottom; } legend { color:#000; } fieldset, img { border:0; } button, input, select, textarea { font-size:100%; } table { border-collapse:collapse; border-spacing:0; }

 9、解释下 CSS sprites,以及你要如何在页面或网站中使用它。
    CSS Sprites其实就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位,background-position可以用数字能精确的定位出背景图片的位置。
    优点:这样可以减少很多图片请求的开销,因为请求耗时比较长;请求虽然可以并发,但是也有限制,一般浏览器都是6个。对于未来而言,就不需要这样做了,因为有了`http2`。

html部分
 1、说说你对语义化的理解?
    1,去掉或者丢失样式的时候能够让页面呈现出清晰的结构 
    2,有利于SEO:和搜索引擎建立良好沟通,有助于爬虫抓取更多的有效信息:爬虫依赖于标签来确定上下文和各个关键字的权重; 
    3,方便其他设备解析(如屏幕阅读器、盲人阅读器、移动设备)以意义的方式来渲染网页; 
    4,便于团队开发和维护,语义化更具可读性,是下一步吧网页的重要动向,遵循W3C标准的团队都遵循这个标准,可以减少差异化。

 2、Doctype作用? 严格模式与混杂模式如何区分?它们有何意义?
    (1)、 声明位于文档中的最前面,处于 <html> 标签之前。告知浏览器以何种模式来渲染文档。 
    (2)、严格模式的排版和 JS 运作模式是 以该浏览器支持的最高标准运行。 
    (3)、在混杂模式中,页面以宽松的向后兼容的方式显示。模拟老式浏览器的行为以防止站点无法工作。 
    (4)、DOCTYPE不存在或格式不正确会导致文档以混杂模式呈现。

 3、你知道多少种Doctype文档类型?
    该标签可声明三种 DTD 类型,分别表示严格版本、过渡版本以及基于框架的 HTML 文档。 
    HTML 4.01 规定了三种文档类型:Strict、Transitional 以及 Frameset。 
    XHTML 1.0 规定了三种 XML 文档类型:Strict、Transitional 以及 Frameset。 Standards (标准)模式(也就是严格呈现模式)用于呈现遵循最新标准的网页,而 Quirks (包容)模式(也就是松散呈现模式或者兼容模式)用于呈现为传统浏览器而设计的网页。

 4、HTML与XHTML——二者有什么区别
    区别:  1.所有的标记都必须要有一个相应的结束标记 
        2.所有标签的元素和属性的名字都必须使用小写 
        3.所有的XML标记都必须合理嵌套 
        4.所有的属性必须用引号""括起来 
        5.把所有<和&特殊符号用编码表示
        6.给所有属性赋一个值 
        7.不要在注释内容中使“--” 
        8.图片必须有说明文字

 5、常见兼容性问题?
    * png24位的图片在iE6浏览器上出现背景,解决方案是做成PNG8.也可以引用一段脚本处理. 
    * 浏览器默认的margin和padding不同。解决方案是加一个全局的*{margin:0;padding:0;}来统一。 
    * IE6双边距bug:块属性标签float后,又有横行的margin情况下,在ie6显示margin比设置的大。 
    * 浮动ie产生的双倍距离(IE6双边距问题:在IE6下,如果对元素设置了浮动,同时又设置了margin-left或margin-right,margin值会加倍。)
     #box{ float:left; width:10px; margin:0 0 0 100px;} 这种情况之下IE会产生20px的距离,解决方案是在float的标签样式控制中加入 ——_display:inline;将其转化为行内属性。(_这个符号只有ie6会识别)
    * 渐进识别的方式,从总体中逐渐排除局部。 首先,巧妙的使用“\9”这一标记,将IE游览器从所有情况中分离出来。 接着,再次使用“+”将IE8和IE7、IE6分离开来,这样IE8已经独立识别。 css .bb{ background-color:#f1ee18;/*所有识别*/ .background-color:#00deff\9; /*IE6、7、8识别*/ +background-color:#a200ff;/*IE6、7识别*/ _background-color:#1e0bd1;/*IE6识别*/ } 
    * IE下,可以使用获取常规属性的方法来获取自定义属性, 也可以使用getAttribute()获取自定义属性; Firefox下,只能使用getAttribute()获取自定义属性. 解决方法:统一通过getAttribute()获取自定义属性. 
    * IE下,event对象有x,y属性,但是没有pageX,pageY属性; Firefox下,event对象有pageX,pageY属性,但是没有x,y属性. * 解决方法:(条件注释)缺点是在IE浏览器下可能会增加额外的HTTP请求数。 
    * Chrome 中文界面下默认会将小于 12px 的文本强制按照 12px 显示, 可通过加入 CSS 属性 -webkit-text-size-adjust: none; 解决. 
    * 超链接访问过后hover样式就不出现了 被点击访问过的超链接样式不在具有hover和active了解决方法是改变CSS属性的排列顺序: L-V-H-A : a:link {} a:visited {} a:hover {} a:active {} 
    * 怪异模式问题:漏写DTD声明,Firefox仍然会按照标准模式来解析网页,但在IE中会触发怪异模式。为避免怪异模式给我们带来不必要的麻烦,最好养成书写DTD声明的好习惯。现在可以使用[html5](http://www.w3.org/TR/html5/single-page.html)推荐的写法:`` 
    * 上下margin重合问题 ie和ff都存在,相邻的两个div的margin-left和margin-right不会重合,但是margin-top和margin-bottom却会发生重合。 解决方法,养成良好的代码编写习惯,同时采用margin-top或者同时采用margin-bottom。 
    * ie6对png图片格式支持不好(引用一段脚本处理)

 6、解释下浮动和它的工作原理?清除浮动的技巧
    浮动元素脱离文档流,不占据空间。浮动元素碰到包含它的边框或者浮动元素的边框停留。 
    1.使用空标签清除浮动。 这种方法是在所有浮动标签后面添加一个空标签 定义css clear:both. 弊端就是增加了无意义标签。 
    2.使用overflow。 给包含浮动元素的父标签添加css属性 overflow:auto; zoom:1; zoom:1用于兼容IE6。 
    3.使用after伪对象清除浮动。 该方法只适用于非IE浏览器。具体写法可参照以下示例。使用中需注意以下几点。一、该方法中必须为需要清除浮动元素的伪对象中设置 height:0,否则该元素会比实际高出若干像素;

 7、浮动元素引起的问题和解决办法?
    浮动元素引起的问题: (1)父元素的高度无法被撑开,影响与父元素同级的元素 (2)与浮动元素同级的非浮动元素会跟随其后 (3)若非第一个元素浮动,则该元素之前的元素也需要浮动,否则会影响页面显示的结构
    解决方法:使用CSS中的clear:both;属性来清除元素的浮动可解决2、3问题,
    对于问题1,添加如下样式,给父元素添加clearfix样式:
        .clearfix:after{content: ".";display: block;height: 0;clear: both;visibility: hidden;}         
        .clearfix{display: inline-block;}

 8、DOM操作——怎样添加、移除、移动、复制、创建和查找节点。
    (1)创建新节点 createDocumentFragment() //创建一个DOM片段 createElement() //创建一个具体的元素 createTextNode() //创建一个文本节点 
    (2)添加、移除、替换、插入 appendChild() removeChild() replaceChild() insertBefore() //在已有的子节点前插入一个新的子节点 
    (3)查找 getElementsByTagName() //通过标签名称 getElementsByName() //通过元素的Name属性的值(IE容错能力较强,会得到一个数组,其中包括id等于name值的) getElementById() //通过元素Id,唯一性

 9、html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?
    * HTML5 现在已经不是 SGML 的子集,主要是关于图像,位置,存储,多任务等功能的增加。 
    * 拖拽释放(Drag and drop) API 语义化更好的内容标签(header,nav,footer,aside,article,section) 音频、视频API(audio,video) 画布(Canvas) API 地理(Geolocation) API 本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失; sessionStorage 的数据在浏览器关闭后自动删除 表单控件,calendar、date、time、email、url、search 新的技术webworker, websocket, Geolocation
    * 移除的元素 纯表现的元素:basefont,big,center,font, s,strike,tt,u; 对可用性产生负面影响的元素:frame,frameset,noframes; 支持HTML5新标签: 
    * IE8/IE7/IE6支持通过document.createElement方法产生的标签, 可以利用这一特性让这些浏览器支持HTML5新标签, 浏览器支持新标签后,还需要添加标签默认的样式: 
    * 当然最好的方式是直接使用成熟的框架、使用最多的是html5shim框架 如何区分: DOCTYPE声明\新增的结构元素\功能元素

 10、iframe的优缺点?
    1.<iframe>优点: 解决加载缓慢的第三方内容如图标和广告等的加载问题 Security sandbox 并行加载脚本         2.<iframe>的缺点: *iframe会阻塞主页面的Onload事件; *即时内容为空,加载也需要时间 *没有语意
 
 11、如何实现浏览器内多个标签页之间的通信?
    利用cookies、localstorge等储存方式

 12、webSocket如何兼容低浏览器?
    Adobe Flash Socket 、 ActiveX HTMLFile (IE) 、 基于 multipart 编码发送 XHR 、 基于长轮询的 XHR
 13、线程与进程的区别
    一个程序至少有一个进程,一个进程至少有一个线程. 
    线程的划分尺度小于进程,使得多线程程序的并发性高。
    另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 
    线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

 14、你如何对网站的文件和资源进行优化?
    期待的解决方案包括:
     文件合并
     文件最小化/文件压缩
     使用 CDN 托管
     缓存的使用(多个域名来提供缓存)

 15、请说出三种减少页面加载时间的方法。
    1.优化图片 
    2.图像格式的选择(GIF:提供的颜色较少,可用在一些对颜色要求不高的地方) 
    3.优化CSS(压缩合并css,如margin-top,margin-left...) 
    4.网址后加斜杠(如www.campr.com/目录,会判断这个“目录是什么文件类型,或者是目录。) 
    5.标明高度和宽度(如果浏览器没有找到这两个参数,它需要一边下载图片一边计算大小,如果图片很多,浏览器需要不断地调整页面。这不但影响速度,也影响浏览体验。 当浏览器知道了高度和宽度参数后,即使图片暂时无法显示,页面上也会腾出图片的空位,然后继续加载后面的内容。从而加载时间快了,浏览体验也更好了。) 
    6.减少http请求(合并文件,合并图片)。

 16、你都使用哪些工具来测试代码的性能?
    Profiler, JSPerf(http://jsperf.com/nexttick-vs-setzerotimeout-vs-settimeout), Dromaeo    

 17、什么是 FOUC(无样式内容闪烁)?你如何来避免 FOUC?
    FOUC - Flash Of Unstyled Content 文档样式闪烁 
    <style type="text/css" media="all">
        @import "../fouc.css";
    </style> 而引用CSS文件的@import就是造成这个问题的罪魁祸首。
    IE会先加载整个HTML文档的DOM,然后再去导入外部的CSS文件,因此,在页面DOM加载完成到CSS导入完成中间会有一段时间页面上的内容是没有样式的,这段时间的长短跟网速,电脑速度都有关系。 解决方法简单的出奇,只要在<head>之间加入一个<link>或者<script>元素就可以了

 18、请你谈谈Cookie的优缺点:
   优点:
    A:每个特定的域名下最多生成20个cookie
    B:IE和Opera 会清理近期最少使用的cookie,Firefox会随机清理cookie。
    C:安全性问题。如果cookie被人拦截了,那人就可以取得所有的session信息。即使加密也与事无补,因为拦截者并不需       要知道cookie的意义,他只要原样转发cookie就可以达到目的了。
   优点:
    1.通过良好的编程,控制保存在cookie中的session对象的大小。
    2.通过加密和安全传输技术(SSL),减少cookie被破解的可能性。
    3.只在cookie中存放不敏感数据,即使被盗也不会有重大损失。
    4.控制cookie的生命期,使之不会永远有效。偷盗者很可能拿到一个过期的cookie。
    5.不可跨域调用。

  补充:cookie的最大大约为4096字节,为了兼容性,一般不能超过4095字节。
     IE 提供了一种存储可以持久化用户数据,叫做uerData,从IE5.0就开始支持。每个数据最多128K,每个域名下最多1M。这个持久化数据放在缓存中,如果缓存没有清理,那么会一直存在。

 19、用html+css实现两列布局,要求

    A、 右侧栏目固定宽度100px
    B、 左侧栏目宽度随浏览器宽度而变化(两栏目占满整个屏幕)

 20、width:100px;
    padding:50px;
    border:1px;
    margin:50px;
    则border 之间的距离是?//200px,在老ie版本可能会是100px,若是加上box-sizing:border-box;则距离会是100px

JS相关问题
 
 1、null和undefined的区别?
    null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。
    当声明的变量还未被初始化时,变量的默认值为undefined。
    null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。

 2、new操作符具体干了什么呢?
    1、创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型。 
    2、属性和方法被加入到 this 引用的对象中。 
    3、新创建的对象由 this 所引用,并且最后隐式的返回 this 。 

 3、JSON 的了解?
    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 它是基于JavaScript的一个子集。数据格式简单, 易于读写, 占用带宽小 {'age':'12', 'name':'back'}

 4、js延迟加载的方式有哪些?
    defer和async、动态创建DOM方式(创建script,插入到DOM中,加载完毕后callBack)、按需异步载入js

 5、如何解决跨域问题? 5种方式
    jsonp、 document.domain+iframe、window.name、window.postMessage、服务器上设置代理页面 jsonp的原理是动态插入script标签

 6、documen.write和 innerHTML的区别
    .write只能重绘整个页面
    innerHTML可以重绘页面的一部分

 7、哪些操作会造成内存泄漏?
    内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。 
    垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。如果一个对象的引用数量为 0(没有其他对象引用过该对象),或对该对象的惟一引用是循环的,那么该对象的内存即可回收。
    setTimeout 的第一个参数使用字符串而非函数的话,会引发内存泄漏。 
    闭包、控制台日志、循环(在两个对象彼此引用且彼此保留时,就会产生一个循环),会引发内存泄漏。

 8、如何判断当前脚本运行在浏览器还是node环境中?
    通过判断Global对象是否为window,如果不为window,当前脚本没有运行在浏览器中

 9、请解释一下 JavaScript 的同源策略。
    这里的同源策略指的是:协议,域名,端口相同,同源策略是一种安全协议。
    指一段脚本只能读取来自同一来源的窗口和文档的属性。
 10、GET和POST的区别,何时使用POST?
    GET:一般用于信息获取,使用URL传递参数,对所发送信息的数量也有限制,一般在2000个字符 
    POST:一般用于修改服务器上的资源,对所发送的信息没有限制。 
    GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值, 也就是说Get是通过地址栏来传值,而Post是通过提交表单来传值。 
    然而,在以下情况中,请使用 POST 请求: 无法使用缓存文件(更新服务器上的文件或数据库) 向服务器发送大量数据(POST 没有数据量限制) 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
 
 11、JavaScript原型,原型链 ? 有什么特点?
    * 原型对象也是普通的对象,是对象一个自带隐式的 __proto__ 属性,原型也有可能有自己的原型,如果一个原型对象的原型不为null的话,我们就称之为原型链。 
    * 原型链是由一些用来继承和共享属性的对象组成的(有限的)对象链。
 
 12、WEB应用从服务器主动推送Data到客户端有那些方式?
    html5 websoket 
    WebSocket通过Flash 
    XHR长时间连接 
    XHR Multipart Streaming 
    不可见的Iframe 
    <script>标签的长时间连接(可跨域)

 13、事件、IE与火狐的事件机制有什么区别? 如何阻止冒泡?
    1. 我们在网页中的某个操作(有的操作对应多个事件)。例如:当我们点击一个按钮就会产生一个事件。是可以被 JavaScript 侦测到的行为。 、
    2. 事件处理机制:IE是事件冒泡、firefox同时支持两种事件模型,也就是:捕获型事件和冒泡型事件。; 
    3. ev.stopPropagation();注意旧ie的方法 ev.cancelBubble = true;

 14、ajax 是什么?ajax 的交互模型?同步和异步的区别?如何解决跨域问题?
    1. 通过异步模式,提升了用户体验 
    2. 优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用 
    3. Ajax在客户端运行,承担了一部分本来由服务器承担的工作,减少了大用户量下的服务器负载。 
    2. Ajax的最大的特点是什么。 Ajax可以实现动态不刷新(局部刷新) readyState属性 状态 有5个可取值: 0=未初始化 ,1=启动 2=发送,3=接收,4=完成 
    ajax的缺点 1、ajax不支持浏览器back按钮。 2、安全问题 AJAX暴露了与服务器交互的细节。 3、对搜索引擎的支持比较弱。 4、破坏了程序的异常机制。 5、不容易调试。
     跨域: jsonp、 iframe、window.name、window.postMessage、服务器上设置代理页面

 15、js数组去重
    第一种:
    Array.prototype.unique1 = function () { 
        var n = []; //一个新的临时数组
        for (var i = 0; i < this.length; i++) //遍历当前数组 { //如果当前数组的第i已经保存进了临时数组,那么跳过, //否则把当前项push到临时数组里面 
            if (n.indexOf(this[i]) == -1){ n.push(this[i]); }
             return n; 
        }
    第二种:
     Array.prototype.unique2 = function() { 
        var n = {},r=[]; //n为hash表,r为临时数组 
        for(var i = 0; i < this.length; i++) //遍历当前数组 {
             if (!n[this[i]]) //如果hash表中没有当前项 {
                 n[this[i]] = true; //存入hash表 
                 r.push(this[i]); //把当前数组的当前项push到临时数组里面 
            }
         }
         return r; 
    }
    第三种:
     Array.prototype.unique3 = function() { 
        var n = [this[0]]; //结果数组 
        for(var i = 1; i < this.length; i++) //从第二项开始遍历 { //如果当前数组的第i项在当前数组中第一次出现的位置不是i, //那么表示第i项是重复的,忽略掉。否则存入结果数组 
            if (this.indexOf(this[i]) == i){
                 n.push(this[i]); 
            }
             return n; 
        }

 16、写出下面的程序的各个运行结果

    function getName() {
          console.log(5);
    }
    Foo.getName();
    getName();
    Foo().getName();
    getName();
    new Foo.getName();
    new Foo().getName();
    new new Foo().getName();
    答案:2、4、1、1、2、3、3
    
 17、下列函数在页面中依次alert出的内容是:(undefined,2,1,3)
    
    <script>
           var a=1;
            function test(){
                alert(a);
                var a=2;
                   alert(a);
                alert(this.a);
                var a=3;
                alert(a);
            }
            test();
    </script>

 18、  写出下列表达式的值

    “1”+ 2 = ? //=12  //任何类型与字符串(双引号引起来的即是)相加都会被转换成字符串类型

    “1”* 2 = ? // =2    //字符串和数字相乘。。会有隐性转换,转换成数字   

    “a”* 2 = ? // =NaN  //但是a转换不成数字,所以会是NaN,:not a number

 19、假设一个公司有500人,设计一个算法,算出公司任何一个人与你同月同日生的人的概率。

  答:

 20、在javascript中如何实现类、继承、私有变量?

  答:
 
 21、下面代码的 this 是什么?//window

    function a() {
            function b() {
                   console.log(this);
            }
            b();
    }
    a();

 22、从浏览器输入URL到页面渲染发生了什么事?

  答:1).当用户输入网页URL时,WebKit 调用其资源加载器加载该URL对应的网页。

      2).加载依赖网络模块建立连接,发送请求并接收答复。

    3).WebKit 接收到各种网页或者资源的数据,其中某些资源可能是同步或异步获取的。

    4).网页被交给HTML解释器转变成一系列的词语(Token)。

    5).解释器根据词语构建节点(Node),形成DOM树。

    6).如果节点是JavaScript代码的话,调用JavaScript引擎解释并执行。

    7).JavaScript代码可能会修改DOM树的结构。

    8).如果节点需要依赖其他资源,例如图片、CSS、视频等,调用资源加载器来加载它们,但是它们是异步的,不会阻碍当前DOM树的创建,直到JavaScript的资源加载并被JavaScript引擎执行后才继续DOM树的创建。

猜你喜欢

转载自blog.csdn.net/weixin_41266588/article/details/87351664