几道简单的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″

 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.php

15             * 第二部分为:key0=0&key1=1&key2=2

16             * */

17             var arr = url.split('?');

18             console.log(arr.toString());

19             if(arr.length <= 1){

20                 return params;

21             }

22             /*

23             * 将之前的第二部分用&拆成多个部分,键值对

24             * 然后用=号将键值对拆开,key = value

25             * */

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>

几道简单的javascript面试题              几道简单的javascript面试题

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

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

主要用到的方法是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'));//24

20 </script>

 

完!

你可能感兴趣的:(JavaScript)