《ppk谈JavaScript》之1:基础3(函数)

 
 1. break 总是针对包含它的最内层的代码块   continue  只能用在循环中 ,总是针对包含它的最内层的代码块
    如果想退出外层的循环的迭代,必须使用标签:

   
  1. outerloop:  for ( var  i = 0 ; i < x.length ; i++){
  2.              for ( var  j = 0 ; j < x ; j++){
  3.                  if ([something is the  case ])  continue  outerloop;
  4.             }
  5.          }

    标签不过就是一段文本加上一个冒号: 但是标签只有与continue或break结合在一起使用时才发挥作用

 2.函数应该咋声明呢?有毛特点呢?应该注意这些:
   一个函数应该使用function关键字来声明
   在名字后面必须要有圆括号,参数们通过逗号被分隔
   函数体的语句被包含在一个由{}  大括号来定界的函数块中

 
   其实所谓使用函数的关键就是:知道什么时候应该把函数当作一个值来处理,而什么时候应该去执行它

 3.大师有一个建议:就是使用尽可能少的参数。函数声明和调用时带有大量参数通常会导致代码难以阅读
  
 4.() 运算符,实际上是JavaScript的运算符:它命令函数执行

 5.说到函数呢,就不能不说一下函数的作用域:JS里面的函数运行在被定义的作用域中,而不是执行它们的作用域中

   即:内嵌函数可以访问所有它的父函数的局部变量,即使父函数在内嵌函数调用之前就已经执行

  
  1. function  sendRequest(url,callback,postData)
  2. {
  3.     var  req = createXMLHTTPObject();
  4.     //其他操作
  5.    req.onreadystateChange =  function (){
  6.            if (req.readyState != 4 )  return ;
  7.    }
  8.  
  9. }

    类似于上面的例子,在内嵌函数中可以调用在上面定义的局部变量req。

    但是,内嵌函数只能访问到局部变量的最终值

    如:

  1. function  init()
  2. {
  3.     var  message =  ' Cliected '  ;
  4.     var  x       = document.getElementByTagName( "a" );
  5.     for ( var  i = 0 ; i < x.length ; i++)
  6.    {
  7.      x[i].onclick =  function ()
  8.      {
  9.         x[i].firstChild.nodeValue   =   message;
  10.       }
  11.    }
  12. }

   假设有10个<a>标签,函数执行过程中i从0到10,然后当函数结束时它保留最终的值是10(如果不为10的话循环能结束吗?嘻嘻)
   所以当该函数执行结束后很久,事件处理程序被激发,而此时i的值是10,所以事件处理程序使用了这个值,于是引发了一个错误,因为文档中的第10个链接的索引值是9,事件处理程序提示错误信息:它无法找到文档中的第11个链接。
   解决方案是使用this关键字来替代 (我稍后讲对象的时候会讲这个关键字),重中之重啊。!!!

   老婆已经催过好多次了。先这样,虽然其实今天我把对象也看了点,不过还是明天继续写吧。(不知道啥时候看,嘿嘿)

你可能感兴趣的:(JavaScript,J#)