首页 > 网站 > WEB开发 > 正文

几道简单的javascript面试题

2024-04-27 14:21:58
字体:
来源:转载
供稿:网友

几道简单的javascript面试题

分享几道Javascript相关的面试题

一。字符串的反转

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

第一方式:就不说思路,看代码之后,一目了然。

 1 <script type="text/javascript"> 2        function foo(){ 3             var str = 'a,b,c,d,e,f,g'; 4             var s = reverse(str);//字符串反转 5             console.log(s); 6             if(s === 'g,f,e,d,c,b,a'){ 7                 console.log('成功。'); 8             }else{ 9                 console.log('失败。');10             }11         }12         function reverse(str){13             var sp = str.split(',');14             //保存反转之后的字符串15             var new_str = '';16             /*从后往前取,用逗号分隔*/17             for(var i = sp.length-1;i>=0;i--){18                 new_str += sp[i]+',';19             }20             /*取到length-1,否则会取到最后一个逗号。*/21             new_str = new_str.substring(0,new_str.length-1);22             return new_str;23         }24     </script>

输出的结果在这:

第二种,用到的是javascript的自带的API。

 1 <script type="text/javascript"> 2         function foo(){ 3             var str = 'a,b,c,d,e,f,g'; 4             var s = reverse(str); 5  6             if(s == 'g,f,e,d,c,b,a'){ 7                 alert('成功。'); 8             } 9             else{10                 alert('失败。');11             }12         }13         function reverse(str){14             return str.split(',').reverse().join(',');15         }16     </script>

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

URL的编码规则:每对name/value由&;符分开;每对来自表单的name/value由=符分开。如果用户没有输入值给这个name,那么这个name还是出现,只是无值

思路是这样的:

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

1 var arr = url.split('?');2 console.log(arr.toString());

结果:

2.在第一的基础上将之前的第二部分,也就是参数部分,用&拆成多个部分,如key0=0,key1=1。然后用=号将键值对拆开,key,value。

1 arr = arr[1].split('&');2 console.log(arr.join(','));3 for(var i = 0, len = arr.length; i < len; i++){4       var a = arr[i].split('=');5       params[a[0]] = a[1];6 }

控制台输出:

下面给出完整的代码:

 1 <script type="text/javascript"> 2         /* 3         * 将URL参数解析为一个对象 4         * @param url 被解析的url地址。 5         * 如:http://witmax.cn/index.php?key0=0&key1=1&key2=2 6         * */ 7         function parseQueryString(url){ 8             /*如果地址为空或者url没有参数则直接返回空null*/ 9             if(url == null || url.indexOf('?') == -1){10                 return null;11             }12             var params = {};13             /*14             * 用?将url拆成两部分,第一部分为:http://witmax.cn/index.php15             * 第二部分为:key0=0&key1=1&key2=216             * */17             var arr = url.split('?');18             console.log(arr.toString());19             if(arr.length <= 1){20                 return params;21             }22             /*23             * 将之前的第二部分用&拆成多个部分,键值对24             * 然后用=号将键值对拆开,key = value25             * */26             arr = arr[1].split('&');27             console.log(arr.join(','));28             for(var i = 0, len = arr.length; i < len; i++){29                 var a = arr[i].split('=');30                 params[a[0]] = a[1];31             }32             return params;33          }34        console.log(parseQueryString('http://witmax.cn/index.php?   key0=0&key1=1&key2=2'));35 </script>

三。鼠标点击页面中的任意标签,alert该标签的名称

注意一下浏览器的兼容性。

简单的说一下target和srcElement以及event。

target和srcElement:

JS中event.srcElement是IE中的用法,event.target是非IE中的用法.

实际使用中可以用:obj = event.srcElement ? event.srcElement : event.target;

event:

1、在IE中,event对象是作为window.event全局对象存在的。

2、在Firefox中,event对象是作为事件的参数存在的。

 1 获取元素事件对象: 2 function getEventTarget(e){ 3     e = window.event || e; 4     return e.srcElement || e.target; 5 } 6  7 /*10    核心部分都在上面了。11 12 */

给出代码:

1 <script type="text/javascript">2         document.onclick = function(evt){3             var e = window.event || evt;4             var tag = e['target'] || e['srcElement']5             alert(tag.tagName);6         };7 </script>

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

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

主要用到的方法是charCodeAt()。这也是解题的核心,将中英文分开计算。

charCodeAt的返回的是指定位置字符的unicode码值,而大于255的编码值为非常规字符,如中文,日文等

 1 <script type="text/javascript"> 2         function getBytes(str){ 3             if(!arguments.length || !str) 4                 return null; 5             if(str.length == '') 6                 return 0; 7             var len = str.length; 8             var bytes = 0;//记录字节数 9             for(var i = 0; i < len; i++){10                 /*charCodeAt的返回的是指定位置字符的unicode码值,而大于255的编码值为非常规字符,如中文,日文等*/11                 if(str.charCodeAt(i)>255){12                     bytes+=2;13                 }else{14                     bytes++;15                 }16             }17             return bytes;18         }19         console.log(getBytes('代码之美,beautiful code'));//2420 </script>

完!


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表