分享几道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

Javascript面试题浅析的更多相关文章

  1. 174道 JavaScript 面试题,助你查漏补缺

    最近在整理 JavaScript 的时候发现遇到了很多面试中常见的面试题,本部分主要是作者在 Github 等各大论坛收录的 JavaScript 相关知识和一些相关面试题时所做的笔记,分享这份总结给 ...

  2. 你应该知道的25道Javascript面试题

    题目来自 25 Essential JavaScript Interview Questions.闲来无事,正好切一下. 一 What is a potential pitfall with usin ...

  3. 互联网中级Javascript面试题

    互联网中级Javascript面试题 1.实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number.String.Object.Array.Boolean)进行值复制 ...

  4. 互联网公司前端初级Javascript面试题

    互联网公司前端初级Javascript面试题 1.JavaScript是一门什么样的语言,它有哪些特点?(简述javascript语言的特点)JavaScript是一种基于对象(Object)和事件驱 ...

  5. 一道 JavaScript 面试题

    有一道 JavaScript 面试题. f = function () { return true; }; g = function () { return false; }; (function() ...

  6. 人人网javascript面试题

    JavaScript面试题要求:以下题目必须从一至四题中,选出三道题,使用原生代码实现,不可使用任何框架,第五题为选作题. 一.  在页面的固定区域内实现图片的展示       <ignore_ ...

  7. 【转】典型的JavaScript面试题

    问题1: 作用域(Scope) (function() { "use strict"; var a = b = 5; })(); console.log(b); 控制台(conso ...

  8. 5个经典的JavaScript面试题

    在IT界中公司对JavaScript开发者的要求还是比较高的,但是如果JavaScript开 发者的技能和经验都达到了一定的级别,那他们还是很容易跳到优秀的公司的,当然薪水就更不是问题了.但是在面试之 ...

  9. JavaScript面试题链接汇总

    最新JavaScript笔试题(含答案) - 爱思资源网 前端工程师面试问题列表 - 爱思资源网 腾讯最新前端面试题记录分享 - 爱思资源网 优酷前端JS部分面试题 - 爱思资源网 百度校园招聘web ...

随机推荐

  1. Web---演示Servlet的相关类、表单多参数接收、文件上传简单入门

    说明: Servlet的其他相关类: ServletConfig – 代表Servlet的初始化配置参数. ServletContext – 代表整个Web项目. ServletRequest – 代 ...

  2. storm的acker机制理解

    转载请注明原创地址http://www.cnblogs.com/dongxiao-yang/p/6142356.html Storm 的拓扑有一些特殊的称为"acker"的任务,这 ...

  3. java读取配置文件

    java 读取文件可以用字节流和字符流. 由于一个汉字占两个字节,所以如果配置文件中有汉字,用字节流读取,会出现乱码. 用字符流则不会出现乱码. 配置文件 b.properties 文件如下: fam ...

  4. redis学习大全

     http://blog.csdn.net/menergy/article/details/17577985 http://blog.sina.com.cn/s/blog_64008ed70102uy ...

  5. 【PHP分享】Windows tail工具分享

    作者:zhanhailiang 日期:2014-09-28 在Linux下能够使用tail -f工具实时查看输出的日志.近期切换到本地Windows开发环境,顿时有点不爽.百度了下,最终找到tail的 ...

  6. uva 167 - The Sultan&#39;s Successors(典型的八皇后问题)

    这道题是典型的八皇后问题,刘汝佳书上有具体的解说. 代码的实现例如以下: #include <stdio.h> #include <string.h> #include < ...

  7. [Java Performance] 数据库性能最佳实践 - JPA和读写优化

    数据库性能最佳实践 当应用须要连接数据库时.那么应用的性能就可能收到数据库性能的影响. 比方当数据库的I/O能力存在限制,或者因缺失了索引而导致运行的SQL语句须要对整张表进行遍历.对于这些问题.只相 ...

  8. careercup-数组和字符串1.3

    1.3 给定两个字符串,请编写程序,确定其中一个字符串的字符重新排序后,能否变成另一个字符串. C++实现代码: #include<iostream> #include<map> ...

  9. CentOS 更新yum源

    公司买了一台刀片机服务器,安装的系统版本太低,导致yum源不合适,安装就会报错. 在网上找了好长时间,才发现是yum源的问题.   转载原文: 突然想起试试 Docker,在一台计算机上安装了 Cen ...

  10. VS2015+TFS2015源代码管理

    使用Visual Studio连接TFS