Javascript面试题浅析

分享几道JavaScript相关的面试题.

字符串反转

这这里提供了两种解题思路。如果各位读者还有其他的思路,可以分享交流!

第一方法:

function reverse(str){
    var sp = str.split(‘,‘);
    //保存反转之后的字符串
    var new_str = ‘‘;
    /*从后往前取,用逗号分隔*/
    for(var i = sp.length-1;i>=0;i--){
        new_str += sp[i]+‘,‘;
    }
    /*取到length-1,否则会取到最后一个逗号。*/
    new_str = new_str.substring(0,new_str.length-1);
    return new_str;
}

第二种方法:

function reverse(str){
    return str.split(‘,‘).reverse().join(‘,‘);
}

编写一个JavaScript函数 parseQueryString,它的用途是把URL参数解析为一个对象,如:var url = “http://witmax.cn/index.php?key0=0&key1=1&key2=2″

1.用?将url拆成两部分,第一部分为:http://witmax.cn/index.php,第二部分为:key0=0&key1=1&key2=2。也就是将地址和参数分开,保存在一个数组中

var arr = url.split(‘?‘);

2.在1的基础上将之前的部分,即参数部分用&拆成多个部分,如key0=0,key1=1。然后用=号将键值对拆开。

var arr = arr[1].split("&");
for(var i = 0; i < arr.length; i++){
    var a = arr[i].split(‘=‘);
    params[a[0]] = a[1];
}

完整代码

function parseQueryString(url){
    //如果url为空或url没有参数则直接返回
    if(url === null || url.indexOf(‘?‘) < 0) return ;
    var params = [];
    //将url拆成2部分
    var arr = url.split(‘?‘);
    if(arr.length <= 1){
        return params;
    }
    //用&拆成多个部分,每个部分是一个键值对
    //然后用=将键值对拆分
    arr = arr[1].split(‘&‘);
    for(var i = 0; i < arr.length; i++){
        var a = arr[i].split(‘=‘);
        params[a[0]] = ar[1];
    }
    return params;
}

点击页面上的任意元素,弹出元素的标签名

这里涉及到浏览器的兼容性问题。简单的说明一下target和srcElement以及event的区别。

在IE浏览器中,event对象是作为window.event全局对象存在的。在Firefox中是作为事件参数存在的。

srcElement是IE中的用法,target是非IE浏览器中的用法。为了兼容可以用如下方式获取:

target = event.srcElement ? event.srcElement : event.target;

要获取标签名可以通过tagName属性。

function getTarget(event){
    event = window.event || event;
    return event.srcElement || event.target;
}
document.onclick = function(event){
    var tag = getTarget(event);
    alert(tag.tagName);
}

编写一个方法,求一个字符串的字节长度

假设,一英文字符占用一个字节,一个中文字符占用两个字节。

主要用到的方法是charCodeAt()。charCodeAt()方法返回的是指定位置字符的unicode码,而大于255的编码值为非常规字符,如中文、英文等。

function getBytes(str){
    //没传参
    if(arguments.length === 0 || !str) return null;
    if(str.length <= 0 || str === ‘‘) return 0;
    var len = str.length;
    //字节数
    var bytes = 0;
    for(var i = 0; i < len; i++){
        if(str.charCodeAt(i) > 255){
            bytes += 2;
        }else{
            bytes += 1;
        }
    }
    return bytes;
}
console.log(getBytes(‘代码之美,beautiful code‘));//24
时间: 2024-10-05 13:22:16

Javascript面试题浅析的相关文章

Javascript面试题解析

Javascript的一些面试题让很多同学感到头疼,下面就根据兄弟连教育(www.lampbrother.net)毕业学员面试遇到的面试题,给大家做一个简单的分享,希望对初入职场的你们有一些帮助:Javascript面试题解析. 第一题 /* 解析: + 优先级大于 ? 此题等价于: 'Value is true' ? 'Something' : 'Nothing' 所以结果是:'Something' */ var val = 'smtg'; console.log('Value is ' +

javascript 面试题

面试题: 1.下面代码运行结果 var bl = false; $.ajax(url, { //... success: function(){ bl = true; } }); while ( !bl ) { alert( bl ); } alert( bl ); // 结果大家自己去想,这道题是面试官临时写的,简单直接,很好的考察你是否理解javascript中的运行机制,很棒的一道面试题 2.扩展Array原型,编写一个去除数组重复项的方法 // 算法一,两层循环,性能差 Array.pr

一道 JavaScript 面试题

有一道 JavaScript 面试题. f = function () { return true; }; g = function () { return false; }; (function() { if (g() && [] == ![]) { f = function () { return false; }; function g() { return true; } } })(); console.info(f()); 首先看前两行 var f = function () {

小猿圈之2019年前端JavaScript面试题(二)

小猿圈前端讲师今天继续给你总结js面试题,前面一篇文章咱们已经有一片js基础部分面试题,今天小猿圈web讲师为你讲解js前端应用设计问题,一定要好好看哦,为了能赢在其他人前面. JavaScript前端应用设计问题 1.解释单向数据流和双向数据绑定. Angular1.x基于双向数据绑定,而React,Vue,Elm等基于单向数据流架构. 2.单向数据流架构在哪些方面适合MVC? MVC拥有大约50年的悠久历史,并已演变为MVP,MVVM和MV*.两者之间的相互关系是什么?如果MVC是架构模式,

一个javascript面试题

javascript面试题代码: <script type="text/javascript"> function fun(x,y){ console.log("log====fun外部x值="+x+",y的值="+y+"下一步输出y的值="+y); console.log(y); return{ fun:function(m){ console.log("x的值="+x); console.l

5个经典的JavaScript面试题

在IT界中公司对JavaScript开发者的要求还是比较高的,但是如果JavaScript开发者的技能和经验都达到了一定的级别,那他们还是很容易跳到优秀的公司的,当然薪水就更不是问题了.但是在面试之前,面试准备也应该足够的充分,毕竟不是 每个优秀的开发者都能在短时间内表现自己.在这篇文章中,我将会列出5个常见的前端开发面试题.看到这里你证明你一定是个程序员或是HR了,不防把文章看 完,了解一下自己还有什么不足之处,有什么问题希望大家可以在留言中交流. 问题1: 作用域 看一下下面的代码: (fu

一道Javascript面试题引发的血案

文章首发于szhshp的第三边境研究所,转载请注明 先来看几道面试题,公司的开发们都尝试做了一下,然而基本没有人能够全部答对. 覆盖的考点很多,也有一些难度,题目挺有意思建议手动执行一边玩玩. Question 1 for (var i = 0; i <5 ; i++) { setTimeout(function(){ console.log(i) ),1000} } console.log(i) Q:这道题目会输出什么? A:这道题目还比较简单,如果对Javascript稍微有一点深入的同学都

前端程序员经常忽视的一个JavaScript面试题

在网上找到一个有关JavaScript的面试题,特整理如下: function Foo() { getName = function () { alert (1); }; return this; } Foo.getName = function () { alert (2);}; Foo.prototype.getName = function () { alert (3);}; var getName = function () { alert (4);}; function getName

javascript高级程序设计--浅析undefined与null的差别

浅析undefined与null的差别 相似处: 1.undefined 和 null 都是javascript 的基本数据类型.事实上两者没有太大差别. 定义: var a=undefined; var a=null; null==undefined;//true 2.null是一个表示"无"的对象,转为数值时为0:undefined是一个表示"无"的原始值,转为数值时为NaN. Number(undefined)//NaN 5 + undefined //NaN