29
2020
04

描述以下变量的区别:null,undefined或undeclared?

JavaScript的最初版本是这样区分的:null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。但是,上面这样的区分,在实践中很快就被证明不可行。目前,null和undefined基本是同义的,只有一些细微的差别。null表示"没有对象",即该处不应该有值。典型用法是:用来初始化一个变量,这个变量可能被赋值为一个对象。用来和一个已经初始化的变量比较,这个变量可以是也可以不是一个
29
2020
04

解释下为什么接下来这段代码不是IIFE(立即调用的函数表达式):function foo(){}();.

要做哪些改动使它变成IIFE?因为在解析器解析全局的function或者function内部function关键字的时候,默认是认为function声明,而不是function表达式,如果你不显示告诉编译器,它默认会声明成一个缺少名字的function,并且抛出一个语法错误信息,因为function声明需要一个名字。1 var foo = function() {2     // doSomeThing.3 };4 5 foo();
29
2020
04

什么是哈希表?

散列表(也叫哈希表),是根据关键码值直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。
29
2020
04

解释下原型继承的原理。

以下代码展示了JS引擎如何查找属性:1 function getProperty(obj,prop) {2     if (obj.hasOwnProperty(prop)) {3         return obj[prop];4     } else if (obj.__proto__!==null) {5         return getProperty(obj._
29
2020
04

解释下JavaScript中this是如何工作的。

this永远指向函数运行时所在的对象,而不是函数被创建时所在的对象。匿名函数或不处于任何对象中的函数指向window 。1.如果是call,apply,with,指定的this是谁,就是谁。2.普通的函数调用,函数被谁调用,this就是谁。
29
2020
04

解释下事件代理。

JavaScript事件代理则是一种简单的技巧,通过它你可以把事件处理器添加到一个父级元素上,这样就避免了把事件处理器添加到多个子级元素上。当我们需要对很多元素添加事件的时候,可以通过将事件添加到它们的父节点而将事件委托给父节点来触发处理函数。这主要得益于浏览器的事件冒泡机制。事件代理用到了两个在JavaSciprt事件中常被忽略的特性:事件冒泡以及目标元素。1 function getEventTarget(e) {2     e=e||window.event;3 &nb
29
2020
04

你目前在使用哪一套CSS框架,或者在产品线上使用过哪一套?(Bootstrap,PureCSS,Foundation等等)

如果有,请问是哪一套?如果可以,你如何改善CSS框架?请问你有使用过CSS Flexbox或者Grid specs吗?如果有,请问在性能和效率的方面你是怎么看的?
29
2020
04

请罗列出你所知道的display属性的全部值。

display属性的值列表如下:
29
2020
04

解释一下你对盒模型的理解,以及如何在CSS中告诉浏览器使用不同的盒模型来渲染你的布局。

关于盒模型请看文章CSS之布局与定位。请解释一下*{box-sizing:border-box;}的作用,并且说明使用它有什么好处?说到IE的bug,在IE6以前的版本中,IE对盒模型的解析出现一些问题,跟其它浏览器不同,将border与padding都包含在width之内。而另外一些浏览器则与它相反,是不包括border和padding的。在我们开发的过程中会发现,有时候,如果对页面中的大区域进行设置时,将border、padding计算到width和height之内,反而更灵活。但W3C的C
29
2020
04

解释下浏览器是如何判断元素是否匹配某个CSS选择器?

从后往前判断。浏览器先产生一个元素集合,这个集合往往由最后一个部分的索引产生(如果没有索引就是所有元素的集合)。然后向上匹配,如果不符合上一个部分,就把元素从集合中删除,直到真个选择器都匹配完,还在集合中的元素就匹配这个选择器了。举个例子,有选择器:1 body.ready#wrapper>.lol233先把所有class中有lol233的元素拿出来组成一个集合,然后上一层,对每一个集合中的元素,如果元素的parent id不为#wrapper则把元素从集合中删去。再向上,从这个元素的父元
29
2020
04

如果设计中使用了非标准的字体,你该如何去实现?

所谓的标准字体是多数机器上都会有的,或者即使没有也可以由默认字体替代的字体。方法:用图片代替web fonts在线字库,如Google Webfonts,Typekit等等;http://www.chinaz.com/free/2012/0815/269267.shtml;@font-face,Webfonts(字体服务例如:Google Webfonts,Typekit等等。)
29
2020
04

使用CSS预处理器的优缺点有哪些?

   LESS&SassLESS是受Sass启发而开发的工具,它列出了如下开发的理由:     “为什么要开发一个Sass的替代品呢?原因很简单:首先是语法。Sass的一个关键特性是缩进式的语法,这种语法可以产生柱式外观的代码。但是你需要花费时间学习一门新的语法以及重新构建你现在的样式表。LESS给CSS带来了很多特性,使得LESS能够和CSS无缝地紧密结合在一起。因此,你可以平滑地由CSS迁移到LESS,如果你只是对使用变量或者操作感兴
29
2020
04

在书写高效CSS时会有哪些问题需要考虑?

1.样式是:从右向左的解析一个选择器;2.ID最快,Universal最慢有四种类型的key selector,解析速度由快到慢依次是:ID、class、tag和universal ;3.不要tag-qualify(永远不要这样做ul#main-navigation{}ID已经是唯一的,不需要Tag来标识,这样做会让选择器变慢。);4.后代选择器最糟糕(换句话说,下面这个选择器是很低效的:html body ul li a{});5.想清楚你为什么这样写;6.CSS3的效率问题(CSS3选择器(
29
2020
04

如何优化网页的打印样式?

<link rel = "stylesheet" type = "text/css" media = "screen" href = "xxx.css"/>其中media指定的属性就是设备,显示器上就是screen,打印机则是print,电视是tv,投影仪是projection。打印样式示例如下:<link rel = "stylesheet" type = "text
29
2020
04

你熟悉SVG样式的书写吗?

SVG 意为可缩放矢量图形(Scalable Vector Graphics)。什么是SVG?SVG 指可伸缩矢量图形 (Scalable Vector Graphics)SVG 用来定义用于网络的基于矢量的图形SVG 使用 XML 格式定义图形SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失SVG 是万维网联盟的标准SVG 与诸如 DOM 和 XSL 之类的 W3C 标准是一个整体书写示例如下:1 <?xml version="1.0" standalone