整理前端面试题(七) : JavaScript题目

1. 哪些操作会造成内存泄漏?

内存泄漏是指向系统申请了内存后不能释放, 使得这片内存不能再被重新申请. 以下的操作会造成内存泄漏:

  1. 当页面中元素被移除或替换时,若元素绑定的事件没有被移除, 在IE中不会做出处理,此时要先手工移除事件, 不然会造成内存泄漏.
  2. 在IE中,如果循环引用的对象是DOM节点,会造成内存泄漏.
  3. 闭包时构成的循环引用会造成内存泄漏.
  4. 在IE中, 自动类型转箱转换会造成内存泄漏.

内存泄漏实例见: http://www.jb51.net/article/37685.htm


2. 编写一个函数,用于统计一个字符串中出现次数最多的字符和其出现的次数?

var str = 'asdfssaaasasasasaa';
function findMaxAppearChar () {
    var arr = str.split('');
    var obj = {};
    var maxKey = ''; 
    var maxIndex = 0;
    for( var i = 0; i < arr.length; i++ ) {
        if( obj[ arr[i] ] ){
            obj[ arr[i] ] += 1;
        }else{
            obj[ arr[i] ] = 1;
        }
    }
    for( key in obj ) {
        if(obj[key] > maxIndex) {
            maxKey = key;
            maxIndex = obj[key];
        }
    }
    return ('出现最多字符是' + maxKey + ',一共出现了' + maxIndex + "次");
}


3. 写一个获取非行内样式的函数,要求兼容IE低版本浏览器

function getStyle ( obj, attr ) {
    if( obj.currentStyle ) {
        return obj.currentStyle[ attr ]; //兼容IE低版本
    }else{
        return window.getComputedStyle( obj, null )[ attr ];
    }
}

4. 闭包是什么? 有什么特性? 对页面有什么影响?

  1. 闭包是什么:闭包是指有权访问另一个函数作用域中变量的函数.
  2. 闭包有什么特性:
    • 通过闭包,可以提供私有作用域.
    • 函数执行完后,内部不会释放
    • 通过闭包,可以实现带有存储函数运行时变量的函数.
  3. 对页面有什么影响:大量使用闭包会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。

5. 解释jsonp的原理,以及为什么不是真正的Ajax

jsonp的原理是通过

你可能感兴趣的:(整理前端面试题(七) : JavaScript题目)