前端面试题1

B站陈学辉前端面试题
1、逗号运算符

<script>
    vari=0,j=0;
    for(;i<10,j<6;i++,j++){
   
        k=i+j;
    };
    console.log(k);
</script>

答案:10
for循环中判断条件为i<10,j<6。逗号运算符以后面为准,所以相当于j<6,循环五次,最后结果为10(5+5)
2、找数组最小值
找到数组[-1, -2, 1, 10, 4, 5, 8]中的最大值,至少写出两种方法

< script>
    var arr=[-1,-2,1,10,4,5,8];
    //第一种 直接使用arr.sort()得到的结果是从小到大的结果
    var max = arr.sort(function (a, b) {
   
        return b - a;
    })[0];
    console.1og(max); //10
    //第二种 Math的max方法需要把值都输入进去,用扩展运算符。
    var max = Math.max(...arr);
    console.log(max); //10
    //第三种 Infinity是最小的值,以此为基准,循环找最小
    var max = -Infinity;
    for (var i = 0; i < arr.length; i++) {
   
        if (max < arr[1]) {
   
            max = arr[i];
        }
    }
    console.log(max); //10
</script>

3、i++和++i

<script>
    var a = 1;
    var b = a++;
    console.log(a, b);

    var c = 1;
    var d = ++c;
    console.log(c, d);
</script>

答案:2 1; 2 2
4、弹窗执行顺序

<script>
    function fn1() {
   
        alert(1);
        }
    alert(fn1());
</script>

答案:1 undefined
先执行alert,弹出括号里面的值。括号里面是一个函数,需要得到结果,就先执行一遍函数,执行过程中遇到alert(1),所以先弹出1.函数没有返回值,所以返回值是undefined。
5、闭包运算

script>
 //以下代码中,运行的结果为:第次弹__第二次弹_第三次弹
    function fn1() {
   
        var a = 0;
        function fn2() {
   
            ++a;
            alert(a);
        }
        return fn2;
    }
    fn1()();
    var newFn = fn1();
    newFn();
    newFn();
</script>

答案:1 1 2
fn1()运行函数后得到返回值也就是fn2,fn1()()相当于fn2()。在函数外部调用fn2(),fn2()中没有变量a,向上找值,使用fn1中的变量进行运算,先自增,后弹窗,弹出结果为1。
newFn()实际上就等于fn1()(),因为是新定义的,所以抽头开始,分析过程和上面一样,所以结果也为1。
第二次newFn()和之前不一样的是前面有过了定义,所以是第二次执行,之前所运算的a值为1,在此基础之上再次运算,得到结果为2。
6、this指向 函数预编译

<script>
//下面代码的运行结果是:第一次弹 第二次弹
    var a = 100;
    function fn() {
   
        alert(a);
        var a = 10;
        return this.a;
        }
    alert(fn(
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值