现在的位置: 首页 > 综合 > 正文

JS函数的定义也有文章

2013年10月08日 ⁄ 综合 ⁄ 共 1094字 ⁄ 字号 评论关闭

函数可以嵌套定义,嵌套的inner函数在outer函数作用域内有效。

但是如果函数在if, for 等block里定义呢?

看下面(ie中测试):

function outer(){
  function inner(){
    if(false){
      function innerInner(){
        alert('in innerInner');
      };
      alert('in inner');//不会被输出
    }
    innerInner();//输出'in innerInner'
  };
  inner();
  innerInner();//出错,因为作用域的原因
}
outer();//调用

 

实际上上面的代码和这个效果是一样的

function outer(){
  function inner(){
    function innerInner(){
      alert('in innerInner');
    };
    if(false){
      alert('in inner');
    }
    innerInner();
  };
  inner();
  //innerInner();
}
outer();

所以,作用与block上的逻辑判断不会影响函数的定义。

Javascript: The definitive Guide, 5th Edition上说:Dirrerent implementations of javascript may be more relaxed about function definitions than the standard requires. For example, Netscape's implementation of Javascript 1.5 allows "conditional function definitions" that appear within if statements.

===========================================================

 /**JS画图,JS小游戏,JS代码集合, JS地图,JS写RPG游戏,JS动画,JS绘图, JS对象, JS函数, JS经典 例子,JS面向对象**/ /**javascript画图,javascript小游戏,javascript代码集合, javascript地图,javascript写RPG游戏,javascript动画,javascript绘图, javascript对象, javascript函数, javascript经典例子,javascript面向对象**/

抱歉!评论已关闭.