js基础之函数递传参数与作用域(5上)

什么是参数?
参数就是JS的数据类型;如:数字、字符串、布尔、 函数、对象、未定义...

先举一个简单的例子:
    function fn1(a,b){
      alert(a+b);
    }
fn1(100,'px');//第一个参数是函数中的a,第二个是b;

这里的a和b,可以是任何数据类型,参数可以根据自己的需求放N多个。

函数作为参数时:
1.参数为匿名函数时,直接调用;
例:
   function fn3(fn){
    fn()
   };
fn3(function (){alert(a)}); //结果是a

2.参数为有名字的函数时,调用时不可以写小括号;
例:
   function fn3(fn){
      fn();
   };
function fn4(){alert(4)};
fn3(fn4); //这里的参数就不可以写括号了。

传参的作用:
**重用代码:
1.尽量保证HTML代码结构一致,可以通过父级选取子
元素;
2.把核心主程序实现,用函数包起来;
3.把每组里不同的值找出来,通过传参实现;

作用域:在一个范围内,对数据进行读写操作;

域:空间、范围、区域....;

作用:读、写;

浏览器:
可以叫“JS解析器”运行JS步骤:
1."找一些东西":找var function 参数;
    如:var a= 1;
      找到a = 未定义;
注意:所有的变量,在正式运行代码之前,都提前赋了一个值:未定义;

    如:fn1 = function fn1(){alert(2)}
注意:所有的函数,在正式运行代码之前,都是整个函数块;

说明:第一步的操作,就叫做JS的预解析;

 

预解析需要注意:
在预解析过程中,遇到重名的变量,只留下一个;
  a.如遇到,变量和函数重名了,就只留下函数;
  b.如遇到两个重名的函数,根据上下文关系,留下最后一个出现的函数;

 

2.逐行解读代码;
表达式:= 、 +、 -、 *、 /、 % 、++、 -- 、!、参数、 Number()....... 所有能够改变值的东西都叫表达式;

注意:表达式是可以修改预解析中的值;

-----------------穿插一道面试题----------------------

alert(a);
var a =1;
function a(){alert(2);}
alert(a);
var a =3;
alert(a);
function a(){alert(4);}
alert(a);

请问以上alert(a)弹出什么?

答案下章揭晓!~! 

转载于:https://www.cnblogs.com/nemoDuoo/p/4571467.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值