您的位置:首页 > Web前端 > JavaScript

Web前端面试题及答案--JavaScript

2017-08-20 16:46 519 查看

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


a1b0
题中++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 。

在参加面试前,我们要做很多面试题,如果面试时面试题有了改动,那么背题、记答案得到的结果肯定是错的;理解做题既能增强自己的面试技巧,又能重温知识点,所以,面试题要理解着做。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息