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(小心陷阱)
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 在执行前会进行类似"预编译"的操作,而且先预定义变量再预定义函数。