面试经验
一、块级元素和行内元素
1.行内元素 不识别 margin-top/bottom(无效) padding-top/bottom(虽然增大了行内元素的面积,但是并没有与相邻元素拉大距离,padding部分覆盖下面)
2.行内元素 设置float属性后 将变成块级元素(可设置宽高);
二、安卓机型flex兼容
1.display:box/inline-box; (old)
2.display: flexbox/inline-flexbox;(old)
3.display: flex/inline-flex;
三、强制类型转换
Number()
true=1,false=0; 任何空转为0;把纯数字或‘’的字符串转为纯数字,否则返回NaN;
parseInt()
整数转换 排除空字符串,从第一位开始转换,如果第一位不是字符串返回NaN;如果是则转换到不是数字的那一位为止;
parseFloat()
四、a++和++a区别
a++ 先赋值再++ alert(a++) 1
++a 先++在赋值 alert(++a) 2
五、移动端一像素边框
.border-image-1px { border-width: 1px 0px; -webkit-border-image: url("border.png") 2 0 stretch; border-image: url("border.png") 2 0 stretch; } .border-1px { position: relative; } .border-1px:after { position: absolute; content: ''; top: -50%; bottom: -50%; left: -50%; right: -50%; -webkit-transform: scale(0.5); transform: scale(0.5); border-top: 1px solid #666; border-bottom: 1px solid #666; }
六、defer和async
<script src="../CGI-bin/delscript.js" defer></script>
<script src="../CGI-bin/delscript.js" async="async"></script>
defer并行加载js文件,会按照页面上script标签的顺序执行(延迟)
async并行加载js文件,下载完成立即执行,不会按照页面上script标签的顺序执行(异步)
七、闭包
使用闭包主要是为了设计私有的方法和变量。闭包的优点是可以避免全局变量的污染,缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。在js中,函数即闭包,只有函数才会产生作用域的概念
1.函数嵌套函数
2.函数内部可以引用外部的参数和变量
3.参数和变量不会被垃圾回收机制回收
八、缓存清除
1.meta方法
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="0">
2.ajax
$.ajax({ url:'www.haorooms.com', dataType:'json', data:{}, cache:false, /*清除*/ ifModified :true , success:function(response){ //操作 } async:false });
3.时间戳 和 随机数
链接:http://www.haorooms.com/post/js_llq_hc
九、ES6的了解
新增模板字符串(为JavaScript提供了简单的字符串插值功能)、箭头函数(操作符左边为输入的参数,而右边则是进行的操作以及返回的值Inputs=>outputs
。)、for-of
(用来遍历数据—例如数组中的值。)arguments
对象可被不定参数和默认参数完美代替。ES6
将promise
对象纳入规范,提供了原生的Promise
对象。增加了let
和const
命令,用来声明变量。增加了块级作用域。let命令实际上就增加了块级作用域。ES6规定,var
命令和function
命令声明的全局变量,属于全局对象的属性;let
命令、const
命令、class
命令声明的全局变量,不属于全局对象的属性。。还有就是引入module
模块的概念
十、js继承方式及其优缺点
原型链继承、借用构造函数(类式继承)、组合式继承
十一、闭包
使用闭包主要是为了设计私有的方法和变量。闭包的优点是可以避免全局变量的污染,缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。在js中,函数即闭包,只有函数才会产生作用域的概念
特性:
1.函数嵌套函数
2.函数内部可以引用外部的参数和变量
3.参数和变量不会被垃圾回收机制回收
十二、position:absolute
和float
属性的异同
-
共同点:对内联元素设置
float
和absolute
属性,可以让元素脱离文档流,并且可以设置其宽高。 -
不同点:
float
仍会占据位置,absolute
会覆盖文档流中的其他元素。
十三、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 单选框或复选框被选中。
十四、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
CSS3中新增了一种盒模型计算方式:box-sizing
。盒模型默认的值是content-box
, 新增的值是padding-box
和border-box
,几种盒模型计算元素宽高的区别如下:
content-box(默认)
布局所占宽度Width:
Width = width + padding-left + padding-right + border-left + border-right
- 1
- 2
布局所占高度Height:
Height = height + padding-top + padding-bottom + border-top + border-bottom
- 1
- 2
padding-box
布局所占宽度Width:
Width = width(包含padding-left + padding-right) + border-top + border-bottom
- 1
- 2
布局所占高度Height:
Height = height(包含padding-top + padding-bottom) + border-top + border-bottom
- 1
- 2
- 3
border-box
布局所占宽度Width:
Width = width(包含padding-left + padding-right + border-left + border-right)
- 1
布局所占高度Height:
Height = height(包含padding-top + padding-bottom + border-top + border-bottom)
十五、数组indexof方法
$.inArray( value, array [, fromIndex ] )
十六、说说你对作用域链的理解
作用域链的作用是保证执行环境里有权访问的变量和函数是有序的,作用域链的变量只能向上访问,变量访问到window对象即被终止,作用域链向下访问变量是不被允许的。
创建ajax过程
(1)创建XMLHttpRequest对象,也就是创建一个异步调用对象.
(2)创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息.
(3)设置响应HTTP请求状态变化的函数.
(4)发送HTTP请求.
(5)获取异步调用返回的数据.
(6)使用JavaScript和DOM实现局部刷新.
十七、对前端模块化的认识
AMD 是 RequireJS 在推广过程中对模块定义的规范化产出。
CMD 是 SeaJS 在推广过程中对模块定义的规范化产出。
AMD 是提前执行,CMD 是延迟执行。
AMD推荐的风格通过返回一个对象做为模块对象,CommonJS的风格通过对module.exports或exports的属性赋值来达到暴露模块对象的目的。