作用域和匿名函数

作用域

通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。

作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。

全局作用域  局部作用域
全局有效   局部有效
作用于所有代码执行的环 境(整个script标签内部)或  者一个独的js文件。 作用于函数内的代码环境,就是局 部作用域。因为跟函数有关系,所以也称函数作用域。

注意:变量有一个坑,特殊情况:如果函数内部,变量没有声明,直接赋值,也当全局变量看,但是强烈不推荐

变量的访问原则

•只要是代码,就至少有一个作用域

•写在函数内部的局部作用域

•如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域

•访问原则;在能够访问到的情况下先局部,局部没有再找全局

匿名函数

匿名函数没有名字的函数,无法直接使用。

使用方式:

  • 函数表达式
  • 立即执行函数

1.函数表达式

将匿名函数赋值给一个变量,并且通过变量名称进行调用我们将这个称为函数表达式

语法:

let fn = function() {
      //函数体
}

调用:

fn()     //函数名()

其中函数的形参和实参使用和具体函数一致。

函数细节补充
  • 两个相同的函数后面的会覆盖前面的函数
  • 在Javascript中实参的个数和形参的个数可以不一致

           如果形参过多会自动填上undefined(了解即可)

          如果实参过多那么多余的实参会被忽略(函数内部有一个arquments,里面装着所有的实参)

例如:

function fn(a,b) {
    console.log(a+b)
}
//(1).实参多余形参剩余的实参不参与运算
//fn(1,2,3)
//(2).实参少于形参          剩余的实参不参与运算
fn(1)       //1 + undefined = NaN
  • 函数一旦碰到return就不会在往下执行了函数的结束用return

例如:

//函数的返回值
functionfn(){
return20
}
//lfn()调用者相当于执行了fn()=20
//return的值返回给调用者
//console.log(fn())
//Let num = prompt('请输入数字')
//let re = fn()
//console.log(re)


//求和函数的写法
function getTotalPrice(x,y) {
    return x + y
//return后面的代码不会被执行}

立即执行函数

场景介绍:避免全局变量之间的污染

语法:

//方式1
(function{  console.log(11)}  )();
//方式2
(function{  console.log(11)  }());
//不需要调用,立即执行

注意:多个立即执行函数要用;隔开

例如(两种方法):

        //function(){}()()
        (function (x, y) {
          document.write(x * y)
        })(1, 2);
    
        //(function(){}())
        (function (a, b) {
          document.write(a + b)
        }(22, 55));
     

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值