前端面试题系列---2

题目一

<script type="text/javascript" charset="utf-8">
function fun(n,o){
    console.log(o)
    return{
        fun:function(m){
            return fun(m,n);
        }
    };
}
var a = fun(0); a.fun(1); a.fun(2); a.fun(3);
var b = fun(0).fun(1).fun(2).fun(3);
var c = fun(0).fun(1); c.fun(2); c.fun(3);
</script>

答案:
a = undefined,0,0,0
b = undefined,0,1,2
c = undefined,0,1,1
解析:

上述这段代码定义了一个函数,这个函数有两个参数,并且会返回一个对象,返回的对象里有一个fun方法,它跳用我们最开始定义的fun函数。这里var
a = fun(0);由于只有一个参数,所以第二个参数应该是undefined。此时a应该就是一个对象。
a这个对象里面引用了n,n的值应该是0,接下来只是不断调用a对象的方法,所以只改变了m但没有改变n。
b在这里也是一个对象,但是其m和n是改变的。fun(0)时(n=0,o=undefined)fun(0).fun(1)(n=1, o =
0)…

题目二

<script type="text/javascript" charset="utf-8">
    var a = 100;
    function testResult(){
            var b = 2 * a;
            var a = 200;
            var c = a / 2;
            alert(b);
            alert(c);
    }
    testResult();
</script>

答案:NaN,100
解析:

变量声明提升

var a
var b = 2 * a; // 这时候a未定义
a = 200;
var c = a / 2;

题目三

<script type="text/javascript" charset="utf-8">
    var tt = "zhen";
    function test(){
            alert(tt);
            var tt = "李鹏";
            alert(tt);
    }
    test();
</script>

答案:undefined,李鹏
解析:

变量提升

var tt
alert(tt);
var tt = "李鹏";
alert(tt);

题目四

列出 display 的值,并说明他们的作用

display:block; // 将元素以块元素的方式显示,块元素的特点就是独占一行并且可以设置宽高
display:inline; // 将元素以行内元素的方式显示,行内元素的特点就是可在一行中排放多个但不可以设置宽高
display:inline-block; // 设置该方式的元素即可以设置宽高又可以在一行中排放多个

题目五

position 中,relative 和 absolute 的区别,包括使用时的注意事项和定位原点。

设置relative的元素,会相对于它自己原本的位置进行定位,在未设置left和top之前,它将位于它原本该在的位置上。relative的元素不会脱离文档流,它还占据着原来的位置。
设置absolute的元素,会相对于最近的非static的父元素进行定位,脱离文档流,后面的元素会视其不存在。

题目六

CSS 选择符有哪些?哪些属性可以继承?优先级算法如何计算?CSS 3 新增的伪类有哪些?

css最主要的选择符有三种标签选择符p{}、类选择符.name{}、id选择符#id{}
可以继承的属性 font-size、text-align、text-indent、color
优先级算法
Id选择符>class选择符>标签选择符。当然作为一名专业的前端只知道这些是远远不够的,我们还要知道为什么是这样。
css优先级计算规则:
选择器的特殊性值表述为4个部分,用0,0,0,0表示
id选择器的特殊性值:0100
类选择器、属性选择器、伪类的特殊性值:0010
标签选择器、伪元素的特殊性值:0001
通配符*的特殊性值:0000
行内样式的特殊性值:1000
!important没有特殊性值,但是它的优先级是最高的。

a{color: yellow;} /*特殊性值:0,0,0,1*/
div a{color: green;} /*特殊性值:0,0,0,2*/
.demo a{color: black;} /*特殊性值:0,0,1,1*/
.demo input[type="text"]{color: blue;} /*特殊性值:0,0,2,1*/
.demo *[type="text"]{color: grey;} /*特殊性值:0,0,2,0*/
#demo a{color: orange;} /*特殊性值:0,1,0,1*/
div#demo a{color: red;} /*特殊性值:0,1,0,2*/

更详细的优先级规则
css3新增的伪类
原:link
:visited
:hover
:focus
新:nth-child
:first-child
:last-child
:nth-child(2n)/:nth-child(even)
:nth-child(2n+1)/:nth-child(odd)…

题目七

css3有哪些新特性

https://www.ibm.com/developerworks/cn/web/1202_zhouxiang_css3/

题目八

new 操作符具体做了什么?

var p = new Person()
创建一个新对像
新对象的this指向p
调用构造函数,并执行构造函数的语句为当前对象p附上属性值
返回这个对象

猜你喜欢

转载自blog.csdn.net/one_girl/article/details/80311436