前端面试题系列之JavaScript面试题二(每天巩固一点点)

写在前面,这几天没有更新是因为疫情,出行不便,买菜买日常用品这些都不方便,家里也有很多事,再加上工作,因此几乎抽不出时间来写文章。

4、[编程题]

写一个求和的函数 sum,达到下面的计算结果

sum(1, 2, 3, 4, 5) = 15,

sum(5, null, -5) = 0,

sum('1.0', false, 1, true, 1, 'A', 1, 'B', 1, 'C', 1, 'D', 1, 'E', 1, 'F', 1, 'G', 1) = 10,

sum(0.1, 0.2) = 0.3

--------------------------------------------------------------------------

解答:此题第一个难点是参数个数是不固定的,需要用到Arguments对象来获取所有传递给函数的参数,得到的是一个类数组对象,注意加粗类数组,不同于Array数组对象;

第二个难点是入参既有整型、又有浮点型、还有字符型,但是求和的结果是浮点型,因此要对参数做类型转换。明白了这两个难点后看下面的程序

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>前端面试题系列之JavaScript面试题二(每天巩固一点点)</title>
</head>
<body>
<script type="text/javascript">
    function sum() {
        var total = 0;
        /*遍历Arguments类数组对象,获得所有的入参*/
        for (var i = 0, l = arguments.length; i < l; i++) {
            //第N个参数
            var arg = arguments[i];
            //入参有可能是整型、浮点型、字符型,结果是浮点型,因此使用parseFloat函数统一转换为浮点型后进行求和计算
            arg = parseFloat( arg );
            //parseFloat如果转换失败会返回NaN错误类型,使用isNaN来判断转换浮点型是否成功
            if( isNaN( arg ) ){
                //转换失败则赋值0
                arg = 0;
            }
            //转换后相加求和
            total = total + arg;
        }
        //使用Number对象的isInteger方法判断是否为整型,不为整型则保留一位小数
        if( !Number.isInteger( total ) ){
            total = total.toFixed(1);
        }
        return total;
    }
    console.log( sum(1, 2, 3, 4, 5) );
    console.log( sum(5, null, -5) );
    console.log( sum('1.0', false, 1, true, 1, 'A', 1, 'B', 1, 'C', 1, 'D', 1, 'E', 1, 'F', 1, 'G', 1) );
    console.log( sum(0.1, 0.2) );
</script>
</body>
</html>

 看下运行结果,符合预期结果。

5、[填空题]

在①、②、③处填上合适的代码,要求删除数组arr1中的第二项和第三项,并且在修改后的数组arr1中第二项添加一个新的值f:

var arr1 = [ 'a', 'b', 'c', 'd', 'e' ];

var arr2 = arr1. ________ (  _______,   ______ , 'f' );

--------------------------------------------------------------------------

解答:此题主要考察对Array数组对象的splice()方法的掌握程度,splice() 方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并返回新的数组,此方法会改变原数组。此题重点要理解splice方法的参数含义,第一个参数指定修改的开始位置,第二个参数表示要移除的数组元素的个数,第三个参数表示要添加进数组的元素,因此此题的答案是splice、1、2

6、[填空题]

在补充代码处填入适当的代码使得打印出预期的结果:

function showMoney( ) {

      //补充代码

};

var personA = new Object;

var personB = new Object;

personA.money= "100";

personB.money= "150";

personA.showMoney= showMoney;

personB.showMoney= showMoney;

期望打印结果:

personA.showMoney( ) 打印出"100"

personB.showMoney( ) 打印出"150"

--------------------------------------------------------------------------

解答:此题的考点是this指针的应用,在ES5标准之前,在函数内部,this指针的值取决于函数被调用的方式,在此题中showMoney函数是被不同的对象personA、personB分别来调用的。因此应该通过this指针访问不同对象的money属性。答案是console.log( this.money );

-----------------------------------简单分割线-------------------------------

我的个人订阅号(大叔学前端/dashu_fe),感兴趣的可以关注下,谢谢!

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值