Web前端面试题及答案–JavaScript篇
随着互联网行业蓬勃兴起,Web前端开发已经成为互联网行业必不可缺的一个岗位,进入公司从事Web前端开发前首先要通过面试这道“难关”,这篇博文便会和大家共同分享一些曾出现过的面试题。
- 写出程序运行结果
for(i=0, j=0; i<10, j<6; i++, j++){
k = i + j;
}
console.log(k); //10
for循环中条件语句参考 ; 前紧挨的条件。
- 写出运算结果
alert('5'+3); //53
console.log(typeof('5'+3)) //string
alert('5'+'3'); //53
console.log(typeof('5'+'3')); //string
alert('5'-3); //2
console.log(typeof('5'- 3)); //number
alert('5'-'3'); //2
console.log(typeof('5'-'3')); //number
alert('5a'-'3'); //NaN
console.log(typeof('5a' - '3')); //number
运算中包含字符串时,+ 表示拼接符、- 表示运算符;
字符串由数字和字母组成时,运算结果为NaN。
- 精度问题
var n = 0.4,
m = 0.3,
i = 0.2,
j = 0.1;
alert((n - m) == (i - j)); //false
alert((n - m) == 0.1); //false
alert((i - j) == 0.1); //true
JS 精度不能精确到 0.1。
- 判断结果(精度问题)
alert(0.4*0.2 == 0.08); //false
0.4 * 0.2 值为 0.08000000000000002,大于 0.08
- 检测变量类型
function checkStr1(str){
return str ='string';
}
console.log(checkStr1('string')); //string
function checkStr2(str){
return str =='string';
}
console.log(checkStr2('string')); //true
function checkStr3(str){
return str ==='string';
}
console.log(checkStr3('string')); //true
= 赋值;
== 用于比较两者是否相等,比较值相等,在比较的时候可以自动转换数据类型;
=== 用于比较两者是否完全相等,比较值和类型都相等,在比较时不会进行数据类型转换。
- 检测 | 的作用
console.log( 8 | 1 ); //9
| 将数字运算转换成二进制并相加: 1000 + 1 = 1001
再将二进制转换成数字:1001 = 9
- 双向非测试
var bool = !!2;
alert(bool); //true
双向非操作可以把字符串和数字转换为布尔值。
- 运算测试
var a;
var b = a * 0;
var c;
if (b == b) { //不成立,执行else中的语句
console.log(b * 2 + "2" - 0 + 4);
} else {
console.log(!b * 2 + "2" - 0 + 4); //26
}
此处运算有些绕,需要一步一步理解:
b是NaN,因为: 字母*数字 得到NaN;
!b得到的是true;
!b*2得到2;
!b*2 + “2”得到22,+ 作用为数字与字符拼接符;
!b*2 + “2” - 0得到22,- 作用为数字与数字运算符 ;
!b * 2 + “2” - 0 + 4即22 + 4 得26;
- 运算测试
<script>
var a = 1;
</script>
<script>
var a;
var b = a * 0;
if (b == b) {
console.log(b * 2 + "2" - 0 + 4); //6
} else {
console.log(!b * 2 + "2" - 0 + 4);
}
不要把注意力只关注在console.log,别忽视了前面给出的条件:var a = 1; 结果为 6。
- ++测试
var a = 10,
b = 20,
c = 4;
console.log( ++a+b+c++ ); //35
题中++a 得到自增值 11;
题中c++ 得到原值 4;
++在左先自增再赋值,++在右先赋值再自增。
- 下列JavaScript代码执行后,iNum的值是多少?
var iNum = 0;
for(var i = 1; i< 10; i++){
if(i % 5 == 0){
continue;
}
iNum++;
}
console.log(iNum); //8
for循环表示:i值为1~9,if判断表示:i≠5,所以iNum 得 8 。
在参加面试前,我们要做很多面试题,如果面试时面试题有了改动,那么背题、记答案得到的结果肯定是错的;理解做题既能增强自己的面试技巧,又能重温知识点,所以,面试题要理解着做。