测试题(1)

  年前的时候遇到了几道题,还和好友语音讨论到凌晨,特此记录,写博客一方面是分享,可是更重要的一方面是自己方便温习,毕竟笔记不好找。


 1.
(function test() {
        var a=b=5;
        alert(typeof a);//number
        alert(typeof b);//number
        alert(a);//5
        alert(b);//5
    })();
    alert(typeof a);//undefinde
    alert(typeof b);//number
    alert(a);//not in define
    alert(b);//5

在这道题目中,前提是js是函数作用域。

首先是用自运行函数来定义了一个a,一个b。其中a,b使用连等的符号来定义的,a是var定义的一个只能在函数中调用的局部变量,但是b是全局的变量,所以说在函数中调用的a和b都是有值的都是5,并且typeof的返回值都是number。但是在函数外面的话,a是一个没定义的,b是全局的,所以说对于b的输出是没有影响的,在外面要输出a的值是会出错的,报错后面的代码就无法执行了,typeof找不到所以说返回的就是undefined。这一点并不是说a的值就是undefined。

接着第二题:

var inum=0;
    for(var i=1;i<10;i++){
        if(i%5==0){
            continue;
        }
        inum++;
    }
    console.log(inum)

上面的结果是输出的8,,这题中重要的地方就是continue。当i是5的时候inum并不会加1,会结束当前的单次循环。能让i%5=0的就是5一个数了,所以说最后会少一次inum的加1,结果是9,要是把continue编程Break大家应该知道是怎样的吧。结果是4.本题目应该是考察你对continue的理解,和break的区别。

接着第三题:

第三题可以分成两大题,两大题中又可以分成4小题。先来说第一种

   var a;
    var b=a*0;
    if(b==b){
        console.log(b*2+"2"-0+4);
    }else{
        console.log(!b*2+"2"-0+4);
    }
首先a只是进行了定义但是并没赋值,所以说他是undefined,b的值经过计算是NAN

,NAN是不会等于NAN的就是走的else,else中!b是转化的1 后面*2是变成了2,加上字符串2就是变成了字符串的22,后面的减0,首先是变成了数字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);
    }else{
        console.log(!b*2+"2"-0+4);
    }</script>

和上面不同的是在html文件中写了两个script标签。在前面的标签中定义了a的值,后面的却没有,最后的结果还是6,个人理解是因为声明提前,他是会把所有的声明都提前的赋值的部分我们依次执行。在这里面a的值是1,并不是没有定义的,b的值是0,走的是if中的,这算起来比较简单是0+“2”-0变为数字2,后面加上4,就是6了。

当然,如果题变成var b=a/0;啥的符号变化就可以衍生出好多题了,(注意:infinity==infinty是true,infinity的乘法自然也是infinity)。

听着歌,写着写着就写不下去了。我要去玩耍


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值