首页 > 其他分享 >函数本身的作用域

函数本身的作用域

时间:2024-06-03 16:37:49浏览次数:13  
标签:function bar 函数 作用域 本身 var foo

函数本身也是一个值,也有自己的作用域。它的作用域与变量一样,就是其声明时所在的作用域,与其运行时所在的作用域无关。

var a = 1;
var x = function () {
    console.log(a);
}

function f() {
    var a = 2;
    x();
}

f() // 1

上面代码中,函数 x 是在函数 f 的外部声明的,所以它的作用域绑定外层,内部变量 a 不会到函数 f 体内取值,所以输出  1,而不是 2 。

总之,函数执行时所在的作用域,是定义时的作用域,而不是调用时所在的作用域。

 

同样的,函数体内声明的函数,作用域绑定函数体内部。

function foo() {
    var x = 1;
    function bar() {
        console.log(x);
    }
    return bar;
}

var x = 2;
var f = foo();
f() // 1

上面代码中,函数 foo 内部声明了一个函数 bar ,bar 的作用域绑定 foo 。当我们在 foo 外部取出 bar执行时,变量 x  指向的是 foo 内部的 x ,而不是 foo 外部的 x 。正是这种机制,构成了“闭包”现象。

标签:function,bar,函数,作用域,本身,var,foo
From: https://www.cnblogs.com/ladybug7/p/18229139

相关文章

  • C++ primer plus习题及解析第七章(函数C++编程模块)
    题目:7.1编写一个程序,不断要求用户输入两个数,直到其中的一个为0。对于每两个数,程序将使用一个函数来计算它们的调和平均数,并将结果返回给main(),而后者将报告结果。调和平均数指的是倒数平均值的倒数,计算公式如下:调和平均数=2.0*x*y/(x+y)代码: intharmonic_averag......
  • 封装保护函数
    承接上篇本篇将分装保护函数直接上代码!(function(){//1.第一步先备份一份tostring方法const$toString=Function.prototype.toStringconstsymbol=Symbol()//.3.改写函数constmytoString=function(){//首先先判断调用这个tostring方法是不是一......
  • 新时代的程序员4大本领:lambda表达式,链式编程,函数式接口,Stream流式计算
    传统程序员4大本领:泛型,枚举,反射,注解新时代的程序员4大本领:lambda表达式,链式编程,函数式接口,Stream流式计算lambda表达式//1.不需要参数,返回值为5()->5//2.接收一个参数(数字类型),返回其2倍的值x->2*x//3.接受2个参数(数字),并返回他们的差值(x,y)->x......
  • python函数
    一、什么是函数定义:函数是组织好,可重复使用,用来实现单一,或关联功能的代码段二、pycharm中的表结构项目,包(init)或目录,py文件,py文件包含多个函数或类等三、函数的有哪些优点?1、降低代码冗余2、增加代码的复用性,提高开发效率3、提高程序的拓展性4、封装:就是把代码片段放在函......
  • strcpy、strncpy、strcat、strncat、strcmp、strstr字符串函数的使用和模拟
    strcpy的使用和模拟(作用)将一个字符串的内容复制到另外一个字符串中代替掉。strcpy的使用效果#include<stdio.h>#include<string.h>intmain(){charstr1[]="Samplestring";charstr2[40];charstr3[40];strcpy(str2,str1);strcpy(str3,"copysucce......
  • 线程创建的函数及应用小结
    进程是计算机分配资源的基本单位,线程是cpu调度的基本单位线程基本概念:LWP:lightweightprocess轻量级的进程。创建线程的底层函数和进程一样,都是clone,因此线程的本质仍是进程(在linux环境下)与进程相比,线程有独立的TCB结构体(类似于进程的PCB),但没有独立的地址空间(共享),类似于合租......
  • 20、matlab信号波形生成:狄利克雷函数、高斯脉冲和高斯脉冲序列
    1、狄利克雷函数生成波形diric()函数语法:y=diric(x,n)返回n次的狄利克雷函数对输入数组x的元素求值。1)diric()函数代码x=linspace(-2*pi,2*pi,301);%定义x取值d6=diric(x,6);d7=diric(x,7);subplot(2,1,1)plot(x,d6)ylabel('n=6')title('狄利克雷函数')su......
  • C/C++mai函数的参数
    在C和C++编程中,main函数通常是程序的入口点,定义程序的启动方式。函数签名intmain(intargc,constchar**argv,constchar**envp)包括三个参数:argc、argv和envp。这些参数分别用于接收命令行参数和环境变量。1.intargcargc代表“argumentcount”,表示传递给程序的命令行参......
  • Day21.函数的类型提示
    1.函数的类型提示_函数常规传参2.函数的类型提示_函数参数设置默认值3.函数的类型提示__annotations__方法查看参数传参类型 ......
  • MySQL—函数(介绍)—字符串函数(基础)
    一、引言 提到函数,在SQL分类中DQL语句中有一个聚合函数,如COUNT()、SUM()、MAX()等等。这些都是一些常见的聚合函数,而聚合函数只是函数的一种,接下来会详细的学习和介绍一下函数的应用场景和以及mysql当中文件的函数有哪些。二、函数概念:函数是指一段可以直接被另一段程......