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

本文精选了一系列Web前端开发面试题目,涵盖JavaScript基础知识、运算规则、类型检测等方面,并深入解析每道题目的答案与背后的原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 。

    在参加面试前,我们要做很多面试题,如果面试时面试题有了改动,那么背题、记答案得到的结果肯定是错的;理解做题既能增强自己的面试技巧,又能重温知识点,所以,面试题要理解着做。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值