HTML5 面试题总结

1 行内元素,块级元素,空元素?
行内: a b span img input select strong
块级: div ul li h1 h12 h3 p….
空元素:br hr link meta等
HTML5移除了一些元素如:big,center,font,frame,frameset等
处理HTML5标签兼容性的问题方式:
1. IE6-IE8支持document.createElement产生的标签,可以利用这个特性兼容
2. 使用html5shim框架

    var arr = [3,6,2,5,9,4],len = arr.length;
    for(var i = 0;i<len;i++){
        for(var j = 0;j<len-i-1;j++){
            if(arr[j] < arr[j+1]){
                var temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }

==与===

===判断规则:
1 首先比较类型,如果类型不同,则肯定不同
在类型相同的前提下:
2 如果两边都是数值,且同一个值,则相等,如果有至少一个NaN,则不相等
3 如果两个值都是字符串,每个位置字符都一样,则相等
4 如果两个值都是true,或者false,则相等
5 如果两个值都引用同一个对象或者函数,则相等
6 如果两个值都是null或者undefined,则相等;

==判断规则:
如果两个值类型相同,进行===比较,
如果两个值类型不同,则需要进行类型转换再比较:
1 如果一个是null,一个是undefined,则相等
2 如果一个是字符串,一个是数值,则要转换成数值再进行比较
3 如果一个boolean,一个是数值,则true转换为1再比较,如果是false转换成0再比较。
如果一个对象一个数值或字符串,要用对象的toString()和valueOf()方法转换成相应的类型再进行比较。

举例:

    0 == ""; //true
    0 == false; //true
    0 === ""; //false
    0 === false; // false
    "" === false; //false
    1 == "1"; //true
    1 === "1";  //false

数组去重

    Array.prototype.unique1 = function(){
        var newArr = [],obj = {};
        for(var i = 0;i<this.length;i++){
            if(!obj[this[i]]){
                newArr.push(this[i]);
                obj[this[i]] = 1;
            }
        }
        return newArr;
    }
    //es6
    var newArr = [...new Set(arr)];
    var newArr = Array.from(new Set(arr));

ajax工作原理
获取XMLHttpRequest对象,

    function getRequest(){
        var xmlHttp = null;
        try{
            xmlHttp = new XMLHttpRequest();
        }catch(e){
            try{
                xmlHttp = new ActiveXObject("Microsoft.XMLHttp");
            }catch(e){

            }
        }
        return xmlhttp;
    }

调用函数open(method,url)
发送请求send();
接收相应
request.onreaystatechange = function(){
if(request.readyState == 4 && request.state == 200){
var restule = request.responseText;
}
}
ajax status:
200 请求成功
404 没有找到
500 服务器出错
304 请求成功,但是源文件没有修改。
403 禁止访问

清除浮动CSS

推荐使用的:
在父级DIV上定义伪类:after
parentDiv:after{display:block;height:0;contetn:”“;clear:both;visibility:hidden}
parentDiv{zoom:1;}//用来兼容IE6

响应式布局
@media screen only not and

null和undefined
null表示没有对象,转换数值为0,
初始化一个变量,可能被赋值为一个对象;
undefined,表示缺少值,数值转化为NaN
变量被声明了但是没有赋值,调用函数时,应该提供的参数没有提供,
对象没有赋值的属性,函数没有返回值时,返回undefined;
null表示无值,undefined表示未声明的变量,或已声明,但并没有赋值。
null==undefined结果为true.

闭包
闭包就是能够读取其他函数内部变量的函数,只有定义在一个函数内部的子函数才能
读取这个函数的变量,可理解成:定义在一个函数内部的函数。
本质上,闭包就是将函数内部和函数外部连接起来的桥梁。

onload和ready的区别
ready:表示文档结构已经加载完成(不包含图片等非文字媒体文件)
onload:表示页面包含图片等在内的所有元素都加载完成

js原型链
每个对象都有一个prototype属性,称之为原型,而原型的值也是一个对象,因此他也有自己的原型,这样串联起来就形成了一条原型链,原型链的链头是Object,他的prototype值比较特殊,为null.
原型链的作用是用于对象继承,函数A的原型属性是一个对象,当这个函数被用作构造函数来创建实例时,该函数的原型属性将被作为原型赋值给所有对象实例。
当访问一个对象的一个属性时,首先查找对象本身,若未找到,则继续查找其原型对象的属性。只要没有被覆盖,对象原型的属性就能在所有的实例中找到。

return返回值
function foo(){
return
{
bar:’hello’
}
}
在js中,return,break,continue语句中,如果后面紧跟换行,解析器一定会在后面填充分号,所以这个函数返回值为undefined;

NaN
Not a Number的缩写,使用isNaN()来判断一个值是否为NaN;
isNaN(NaN) true
isNaN(22) false
isNaN(‘AA’) true
isNaN(‘343fdf’) true
typeof NaN //number
NaN === NaN false
NaN === undefined false;

短路运算
逻辑与和逻辑或会返回一个值,并且二者都是短路运算符

逻辑与返回第一个是false的操作数或最后一个为true的运算符
1&&2&&0 //0
1&&0&&1 //0
1&&2&&3 //3
如果某个操作数为false,则之后的都不会被计算

逻辑或返回第一个为true的操作数或最后一个是false的操作数

1||2||0 //1
0||2||1 //2 第一个是0,为false,那么还要继续计算下去,第二个2为true,则返回2
0||0||false //false
如果某个操作数为true,则之后的值都不会被计算

判断为数组
Array.isArray()
toString.call([]); //”[object Array]”
var arr = [];
arr.constructor://Array
instanceof Array;//true

事件绑定
addEventListener(events,callback,captrue)//captrue 默认为false,冒泡执行,true就是捕获执行
IE9以前使用attachEvent(on+event,callback)只支持冒泡

var event = event || window.event;
var target = event.srcElement || event.target
document.documentElement.clientWidth || document.body.clientWidth

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值