shui-面试题

!!!- 常识

  1、前端写代码应注意什么?

    行为(Js)、样式(css)、结构(HTML)分离

 

!!!- CSS 

  1、在父元素为什么要添加font-size:0 ?

    因为元素节点有文本节点,在缩进代码时会占据宽度,font-size:0 解决元素间的空白间隙

  2、CSS选择器优先级

    !important >  行间样式  >  ID >  Class  >  元素选择器(p,div...) > *

 

!!!- HTML

 

!!!- JavaScript

 

  ***

    ceil()向上取整

    floor()向下取整

    abs()绝对值

 

  ***单击按钮,停下来的DIV,还能移动?

    加else

  

  ***运动开始前为什么要先关闭定时器?

   开启定时器的时候,应该先关闭定时器

   如果是setTimeout这种定时器,不清理就会在线程空闲后立即执行一次。
     如果是setInterval这种,不清理,就一直按照间隔不断的执行下去。

  

  ***谈谈你对函数参数的理解?什么时候用?

     函数传参:参数就是占位符

     什么时候用:函数里定不下来的东西

 

  ***操作属性的方法?

    。

    【“str”】  (具体属性的值是可以任意改变的  JS中点可以做的,【】都可以做)

 

  ***变量和字符串

    变量不带引号,会被当成字符串来处理

 

  ***对this的理解?

    当前发生事件的元素

    是一个关键字

 

  ***什么是JavaScript?

    ECMAScript   :解释器

    DOM :文档对象

    BOM:浏览器对象

 

  ***变量的类型?

    number  string  boolean  undefined(未定义)  function  object

 

  ***类型的转换?

      强制类型转换: parseInt()整数    parseFloat()小数    number      

    隐式类型转换:  ==     ===    +

 

  ***NAN的意思?

    非数字

    注:NAN和NAN是不相等的

 

  ***isNaN()?

    判断是否是NAN,是就返回true,

 

  ***变量作用域?

    全局变量,局部变量

 

  ***什么是闭包?

    子函数可以使用父函数的局部变量

 

  ***运算符

    逻辑运算符:&&与    || 或    !否

    算术运算符:+  -  x  % 

    赋值运算符:=  +=  -=   *=   /=   %=

    关系运算符:>  <   >=   <=  ==   ===  !=  !===

    运算符优先级  括号()

 

  ***程序流程控制?

    if(){}else{}   while   for  switch   ?:(三木运算符、三元)    break(中断整个循环)   continue(中断本次循环)   true  false

 

  ***JSON和数组的区别?

    JSON的下标的字符串,数组的下标是数字

    JSON没有length ,数组有length

    JSON的循环for(var i  in  json)

 

  ***DOM操作:创建、删除、插入元素

    创建:先创建createElement(标签名) 再添加到指定的位置   appendChild(节点)

    删除: removeChild(节点)

    插入:insertBefore(节点,原有节点)

    注:insertBefore和appendChild功能是一样的,只不过插入的位置不一样

 

  ***文档碎片?

    可以提高DOM性能,但只能是在低版本的浏览器上可以提升性能!吃惊不吃惊...

    原理:相当于去超市购物的袋子

    document.createDocumentFragment()

    例子:

      window.onload=function()
      {
        var ul1=document.getElementById('ul1');
        for(var i=0;i<999;i++)
        {
          var aLi=document.createElement('li');
          ul1.appendChild(aLi);
        }
      }

      这样一个一个创建999个LI的话,很浪费性能,而文档碎片就是一个袋子,一下子创建

      window.onload=function()
      {
        var ul1=document.getElementById('ul1');
        var sui=document.createDocumentFragment();        //创建一个文档碎片
        for(var i=0;i<999;i++)
        {
          var aLi=document.createElement('li');
          sui.appendChild(aLi);                                              //把创建的LI给文档碎片,
        }
        ul1.appendChild(sui);                //最后一下子全部添加到ul中
      }

 

  ***parentNode?

    父节点,一般可以用来删除,点击《a》可以删除父节点

    

   ***表格

    tBodies[0]     ====》    getElementsByTagName('tbody')[0]

    rows[o]         ====》     getElementByTagName('tr')[0]

       cells[1]    ====》   getElementByTagName('td')[1]

    tHend      ====》  表头

    tFoot       ====》  表尾

 

  ***创建数组的语法?

     1、 var arr=[值1,值2,值3];                       //隐式创建

         var arr1 = [1,3,5,7,9];
         document.write(arr1[2] + '<br>');

       2、var arr=new Array(值1,值2,值3);        //直接实例化
        var arr2 = new Array(2,4,6,8,10);
        document.write(arr2[3] + '<br>');

       3、var array=new Array(size);             //创建数组并指定长度
        var arr3 = new Array(3);//固定数组长度为3
        arr3[0] = 1;
        arr3[1] = 2;
        arr3[2] = 3;
        document.write(arr3[2] + '<br>');

 

  ***appendChild?

    先删除,

    再添加

   

  ***documentElement

     属性可返回文档的根节点

 

  ***什么是Cookie

    页面用来保存信息

    cookie用来识别用户

    cookie 是存储于访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie。你可以使用 JavaScript 来创建和取回 cookie 的值。

    

  *** Cookie的特性?

    大小、数量有限

    有过期时间

    同一个网站同享一套Cookie,也就是一个域名.....

 

  ***

 

!!!- JQuery

posted @ 2017-11-30 19:09  三庙  阅读(112)  评论(0编辑  收藏  举报