JS面试题及答案总结

1. 截取字符串abcdefg的efg 

<div id="test">abcdefg</div>

var mytext=document.getElementById("test"); 
var myvalue=mytext.innerHTML; 
var jiequ=myvalue.substring(4); 

 

2. 写出一下运算结果 


alert(typeof(null))  // object 
alert(typeof(undefined))  // undefined 
alert(typeof(NaN))  // number 
alert(NaN==undefined)  // false 
alert(NaN==NaN)  // false 
var str="123abc"; 
alert(typeof(str++)) // number 
alert(str) // NaN

3.写出程序运行的结果? 


for(i=0, j=0; i<10, j<6; i++, j++){ 
k = i + j; 

}

结果:10(小心陷阱)

 

4. 用正则怎样去掉重复的字符串,只保留一个

var str= "aaaebbbcccddd";
str = str.replace(/(.)\1+/g,'$1');

alert(str);

5. 以下哪个在JAVASCRIPT中会报错: 
var a=(); 
var a=[]; 
var a={}; 
var a=//; 

var a=();var a=//; 报错     两个不行!

6. 下面代码执行结果是什么?

<script> 
  alert(typeof addB); 
  function addB() { 
  alert("function addB"); 
  } 
  var addB = "variable"; 
  alert(addB); 
</script> 

执行结果是"function"和"variable"。 
JS解析器先预定义了 addB 变量为 undefined, 但是 addB 函数覆盖了此变量,因此一开始执行结果是 function,然后 addB 被赋值为 "variable",因此最后执行结果是 "variable",上面的代码即使变为

Js代码 

<script> 
  alert(typeof addB); 
  function addB() { 
  alert("function addB"); 
  } 
  var addB = "variable"; 
  alert(addB); 
</script> 


结果也一样,这说明JS解析器先预声明变量,再预定义函数 。 
小结一下:JS 在执行前会进行类似"预编译"的操作,而且先预定义变量再预定义函数。 

 

 

posted @ 2015-01-14 15:11  lanyan  阅读(1589)  评论(0编辑  收藏  举报