前端面试题饥人谷技术博客让前端飞

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

2017-08-05  本文已影响380人  熠辉web3

1. 普通事件和事件绑定有什么区别


2. addEventListener()attachEvent()的区别


3. 闭包是什么?有什么特性?

(1) 闭包: 在函数运行时形成的封闭的区间闭包.(另外一种说法是,闭包是能够访问其他函数内部变量的函数. 个人不赞同这个说法.)

(2) 特性:


4. 如何阻止事件冒泡和html标签的默认行为

(1) 阻止事件冒泡:

(2) 阻止html标签的默认行为:


5. 编写一个数组去重的方法

方法1:采用数组的filter方法

function filterRepetition ( arr ) {
    return arr.filter(function ( item, index, array ){
        return array.indexOf( item ) === index;
    })
}

方法2:采用缓存的方法

function filterRepetition ( arr ) {
    var cache = {};
    var resultArr = [];
    for( var i = 0; i < arr.length; i++ ){
        if( cache[arr[i]] ) {
            continue;
        }else{
            cache[arr[i]] = true;
            resultArr.push( arr[i] );
        }
    }
    return resultArr;
}

更多方法可以参考文章: 《JavaScript数组过滤相同元素的6种方法》


6. 获取页面所有的checkbox

var resultArr= [];
var input = document.querySelectorAll('input');
for( var i = 0; i < input.length; i++ ) {
    if( input[i].type == 'checkbox' ) {
        resultArr.push( input[i] );
    }
}
//resultArr即中获取到了页面中的所有checkbox

7. 以下代码的输出结果

console.log( null == undefined );
console.log( null === undefined );
console.log( [] == false );

答案分别为: true, false, true

最后一个的原因,请参考: Empty arrays seem to equal true and false at the same time


8. 已知有字符串foo="get-element-by-id",写一个function将其转化成驼峰表示法"getElementById"

function getCamelCase ( str ) {
    var arr = str.split("-");
    var resultArr = [];
    for( var i = 0; i < arr.length; i++ ){
        if( i === 0 ) {
            resultArr.push( arr[i] ); 
        }else{
            resultArr.push( arr[i].charAt( 0 ).toUpperCase() + arr[i].slice( 1 ) );
        }
    }
    return resultArr.join('');
}

更多方法可以参考文章: 《整理前端面试题(三):驼峰命名法和短横线命名法的转换》


9. 输出今天的日期,以YYYY-MM-DD的方式,比如今天是2014年9月26日,则输出2014-09-26

function getDate () {
   var date = new Date();
   var arr  = [ date.getFullYear(), date.getMonth() + 1, date.getDate() ];
   return arr.join('-')
}

10. 将字符串"<tr><td>{$id}</td><td>{$name}</td></tr>{$id}"中的{$id}替换成10{$name}替换成"Tony" (使用正则表达式)

var str  = '<tr><td>{$id}</td><td>{$name}</td></tr>{$id}';
var newStr = str.replace( /{\$id}/g, 10 ).replace( /{\$name\}/g, 'Tony' );
上一篇下一篇

猜你喜欢

热点阅读