zoukankan      html  css  js  c++  java
  • javascript 中break、 continue、函数不能重载

      在javascript中,break与continue有着显著的差别。 

      如果遇到break语句,会终止最内层循环,无论后面还有多少计算。

      如果遇到continue,只会终止此次循环,后面的自循环依然执行。

            var num = 0;
            for (var k = 0; k < 3; k++) {
                for (var i = 0; i < 3; i++) {
                    for (var j = 0; j < 3; j++) {
                        if (i === 1 && j === 1) {
                            break;
                        }
                        num++;
                    }
                }
            }
            console.log(num);

      此时 num=3*3-3*2=21

      如果换成continue,则 num=3*3-3*1=24;

      看看换成标签会出现什么情况呢,情况代码:

    var num = 0;
            comeouter:
            for (var k = 0; k < 3; k++) {
                for (var i = 0; i < 3; i++) {
                    for (var j = 0; j < 3; j++) {
                        if (i === 1 && j === 1) {
                            break comeouter;
                        }
                        num++;
                    }
                }
            }
            console.log(num);

      由于是break,因此,一旦i===1&j===1,则立刻退出全部循环,因此 num=4;

      如果是continue,则只保留最外层的循环,里层循环不在执行,因此 num=3*4=12;

    (二)

      在面向对象的语言中, 根据函数的参数类型与参数的个数不同,我们可以对函数进行重载; 但是Javascript中没有函数重载的说法。

      如果定义两个javascript函数,解析器只会解析写在最底端的那个函数。

            function testA(num1, num2) {
                console.log(num1+'-'+num2);
            };
            
            function testA(num1) {
                console.log(num1);
            };
    
            testA(15, 18);

      运行的结果是 15。

      也许会觉的奇怪,我传入了两个参数,调用的是只有一个参数的函数,为什么不报错呢?

      这是因为在Javascript中,解析器不管传过来的参数的个数以及类型的,有多少调多少。

      所有的参数其实都是放在一个叫做 arguments 里的,这类似于一个数组,可以存储不同类型的数据,看下面的代码。 

         function testA() {
                console.log(arguments[0]+'--'+arguments[1]);
            };
    
            testA(15, 18);

        输出结果是15--18。

    (三)

      关于’==‘与’====‘的区别

      请看下面

      console.log(true==1)   输出true

      console.log(true===1) 输出false

    (四)

      任何与NaN 进行操作,输出的结果都是Nan,比如NaN + 1。

      这里比较好玩的是NaN==NaN  输出 false,

      但null==null   true

      null ==undefined  ture,实质上undefined是null的子类.

      null 值其实一个空对象指针,因此 typeof null 返回的是一个object

      

      

  • 相关阅读:
    从解放劳动力来看未来的科技进程
    流程变换与抽象
    EntityFramework Any 生成的sql语句超长。
    值类型引用类型List Remove 方法Remove不掉哪一个项。
    CentOS 7.0编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14
    SVN的安装配置(linux)
    【题解】洛谷 P1979 [NOIP2013 提高组] 华容道 | 20211119 模拟赛 Y【BFS 最短路】
    【题解】[Codechef CALLSCHE] Call Center Schedule | 20211127 模拟赛 或负(fortune)【网络流】
    【题解】[Codeforces 1086F] Forest Fires | 20211119 模拟赛 o【插值 扫描线】
    NOIP2021 SC 迷惑行为小赏
  • 原文地址:https://www.cnblogs.com/xianrongbin/p/4119888.html
Copyright © 2011-2022 走看看