JS函数的定义也有文章

函数可以嵌套定义,嵌套的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面向对象**/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值