zoukankan      html  css  js  c++  java
  • javascript学习笔记[3]流程控制

          玩了一会游戏,现在可以静一下,看会书,今天看到了流程控制和函数基础,先总结一下流程控制,等会再总结一下函数控制,明天应该就可以进入javascript的面向对象编程了。我主要看的是javascript权威指南--张亚飞编著--清华大学出版社;还参考了javascript核心对象参考手册--韩延峰--人民邮电出版社,还有就是网上自己百度的,一些不错的博文我都会附上链接,也尊重那些原创作者们。好了开始:

         3 流程控制

                一些简单的流程控制,例如if....else if ...else语句,switch语句,while,do while语句差不多所有语言都一样的吧,自己稍微看一下就行了,就不说了。下面说几个我觉得有意思的流程控制语句:

                1) for...in 循环

                      语法:for(variable in object)

                                 statement;

                   for...in语句遍历的是对象的原型链中对象的属性,这里有些情况是不能用for in循环的,比方对象的方法,宿主对象的属性,静态成员,挺乱的,留待以后知道什么是原型,链这些知识知道了之后再解决吧。

    <script>
          var arr = new Array("this", "is", "a", "test");
          for(var i in arr){
             document.write(arr[i]+"\t");
    }
    </script>
    //输出 this    is      a      test
    
    
    //这个例子挺好的
    var myObject ={hisName:"javascript", age:11, belonging:"ECAM"};
    for(var prop in myObject){
          document.write("myObject." + prop + "=" + myObject[prop]+"<br />");
    }
    
    //输出:
    // myObject.hisName = javascript
    //myObject.age = 11
    //myObject.belonging = ECMA

                2) for each...in循环

                      语法:for each(variableIterant in object){

                                         statement;

                        }

                      for each...in遍历的是对象属性的值,而不是属性的名称

    //还是这个例子
    var myObject ={hisName:"javascript", age:11, belonging:"ECAM"};
    for(var prop in myObject){
         document.write(item+"<br />"):
    }
    
    //输出:
    // javascript
    //11
    //ECMA

               3) 标签语句

                    为语句提供一个标识符,用于直接跳转到该标识符所指定的行开始执行,只能由break,continue语句使用,用来指示break和continue到哪个语句,实际中很少用到吧,反正这是我第一次看到。下面是一个不错的例子

    <script type="text/javascript">
        outerloop:
          for (var i = 0; i < 10; i++)
          {
              innerloop: 
              for (var j = 0; j < 10; j++)
                {
                    if (j > 3)
                    {
                        break;
                    }
                    if (i == 2)
                    {
                        break innerloop;
                    }
                    if (i == 4)
                    {
                        break outerloop;
                    }
                    document.write("i=" + i + " j=" + j + "<br>");
                }
          }
    </script>

               4) let语句(javascript 1.7新增的)

                   挺新的东西吧,书上介绍的也很短,网上资料也很少,只知道let语句允许使用标识符来标示一个语句。

               5) yield语句

                   这个东西挺有用的,yield语句可以在循环语句中产生一个输出值并返回,包含yield语句的函数称为产生器,一般用迭代器遍历产生器。

    //这个yield语句我只在firefox浏览器中看到了效果,其他浏览器都没有显示
    <script type="application/javascript; version=1.7"> function generator(){ var i = 0; while(i<10){ //产生输出 yield i ; i++; } } //获取产生器 var g = generator(); //迭代 for(var j = 0; j<10; j++){ document.write(g.next()+"<br>"); } </script> //不使用产生器 <script > function writeValue(param){ document.write(param+"<br />"); } function generator(){ var i = 0; while(i<10){ //产生输出 writeValue(i); i++; } } generator(); </script>

               6) with语句

                   用来方便地引用某个特定对象额方法和属性

    var rightNow = new Date();
    with(rightNow){
    document.write(getDay()+"<br>");
    document.write(getMonth()+1+"<br>");
    document.write(getFullYear()+"<br>");
    }
    //就是少写了rightNow这个对象。

    以上全部都属个人原创,请大家转载的时候附上原创链接: http://www.cnblogs.com/tonylp

  • 相关阅读:
    网络-路由交换-IPv4-Cisco-协议概要
    网络-路由交换-IPv4-Cisco-协议基础
    网络-路由交换-网络安全-华为-ACL分类
    泰克-OSPF
    网络-路由交换-网络安全-华为-DHCP基础
    不同系统下的数据参考
    model一定是和数据库表对应的么?
    NUnit属性-百度Nunit-Gui
    NUnit属性
    NUnit详细使用方法
  • 原文地址:https://www.cnblogs.com/tonylp/p/2881414.html
Copyright © 2011-2022 走看看