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

来源:互联网 发布:律师费计算软件 编辑:程序博客网 时间:2024/04/28 21:51
 
 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关键字来替代(我稍后讲对象的时候会讲这个关键字),重中之重啊。!!!

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