函数的作用域

在选项卡的制作中因为不知道函数作用域出了很多错误。

在JavaScript中,定义在函数中的参数和变量在函数外部是不可见的,而且在一个函数中的任何位置定义的变量在改函数中的任何地方都可见。q

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<input id="btn1" type="button"/>
<script>
    var oBtn = document.getElementById(‘btn1‘);
    var foo = function () {
        var a = 3, b = 5;
        alert(a);//3
        var bar = function () {
          var b = 7, c =  11;
           alert(a+","+b+","+c);//3,7,11
            a += b + c;
            alert(a+","+b+","+c);//21,7,11
        };
        alert(a+","+b);//3,5如果这里写上要弹出c则会报c没有定义的错误
        bar();
        alert(a+","+b);//21,5如果这里写上要弹出c则会报c没有定义的错误

    };
    oBtn.onclick = foo;

</script>

</body>
</html>
时间: 2024-11-09 06:04:23

函数的作用域的相关文章

JavaScript函数,作用域以及闭包

JavaScript函数,作用域以及闭包 1. 函数 (1). 函数定义:函数使用function关键字定义,它可以用在函数定义表达式或者函数声明定义. a. 函数的两种定义方式: * function functionName() {} * var functionName = function(){} b. 两种函数定义不同之处 1). 声明提前问题 函数声明语句   :声明与函数体一起提前 函数定义表达式 :声明提前,但是函数体不会提前 请看下面图示:绿色线上面实在js初始加载的时候,查看

关于JS函数变量作用域

这样一段代码: var a = 123 function f() { console.log(a); var a = 1; console.log(a); } 执行f(),会怎样输出呢? 你可能会想当然的第一次console.log输出的是123,也就是全局变量的值,而第二次显示是1. 但是,最先输出的是undefined. 函数的作用域始终优先于全局作用域,所以局部变量a会覆盖掉与他同名的全局变量,尽管第一次console.log的时候,a还没有被正式定义,但该变量已经存在本地空间了.即输出u

函数(Function)作用域

函数跟变量一样也是有作用域的:Global.Script.Local.Private Global:作用于整个PowerShell会话,只要PowerShell会话不结束,被Global修饰的变量和函数都是可用的. Script:仅作用于脚本执行期间,一旦脚本执行完毕,脚本中被Script修饰的变量和函数都不在可用. Local:默认作用域,变量在当前和嵌套的作用域中可见,复制操作语法能在当前的local作用域中修改变量值. Private:最严格的作用域,变量仅在当前作用域有效.通过这个关键字

函数的作用域链是由函数定义时所决定的而非调用

废话不多说,上代码: 案例1 <!doctype html> <html> <head> <meta charset="utf-8"> <title>Test</title> <script> function a() { var flag = true; b(); } function b() { console.log( flag ); } a(); </script> </hea

JavaScript-4.2函数,变量作用域---ShinePans

<html> <head> <meta http-equiv="content-type" content="text/html;charset=GB2312"/> <title> 4.2 函数和变量作用域 </title> <!--脚本部分--> <script type="text/javascript"> var v1,v2; v1=10; v2=20; f

函数和函数的作用域问题,arguments

this的值:在函数执行时,this关键字并不会指向正在运行的函数本身,而是指向调用该函数的对象.所以,如果你想在函数内部获取函数自身的引用,只能使用函数名或者使用argument.callee属性(严格模式下不可用),如果该函数是一个匿名函数,则你只能使用后者. 1.定义函数 三种方式: 1)函数声明 (function语句) function name([param[, param[, ... param]]]) { statements } name函数名. param函数的参数的名称,一

即时函数临时作用域

<!DOCTYPE html> <html> <head> <title>即时函数临时作用域(匿名自调用函数)</title> <meta charset="utf-8"> </head> <body> <!--这里创建了一个即时函数,并且在即时函数中还为document添加了一个click事件.这段代码为处理事件程序创建了一个闭包该闭包使numclick变量持久化.并且被事件处理函数

JavaScript基础--函数声明,函数的作用域链

函数声明和函数表达式区别 函数声明是通过 function 函数名(){}来声明一个函数 函数表达式是通过声明一个变量,然后赋值函数. 两者区别是,在程序执行前,会先获取函数声明声明的函数,获取变量的声明,这里变量的声明只是先开辟一个空间,然后给了个名字,之后到该变量名赋值的时候,才有值,也就是说,在未得到该变量的赋值前,使用该变量会得到undefined. 而无论你把函数放在放在程序中的开头或者结尾,函数的执行语句都能正常执行. fn();//输出   fnconsole.log(fn2);/

函数对象、函数的嵌套、名称空间、函数的作用域、闭包

函数对象 def foo(): print('foo') 函数可以被赋值f=fooprint(f) #结果是一个内存地址f() #内存地址加()内运行函数 把函数当成参数传递def bar(func): print(func) func() bar(foo) 把函数当成返回值def bar(func): print(func) return func f=bar(foo)f()把函数当做容器类型的元素去用 def add(): print('=============>function add'

函数的作用域链的理解

1.作用域(scope):在javascript没有块级作用域,是由函数来划分的.变量和函数的作用域是在定义时决定而不是执行时决定,也就是说词法作用域取决于源码,通过静态分析就能确定,因此词法作用域也叫做静态作用域(with和eval除外).当定义了一个函数,当前的作用域链就保存起来,并且成为函数的内部状态的一部份.在最顶级作用域链仅由全局对象组成,而不和词法作用域相关,然而,当定义一个嵌套的函数时,作用域链就包括外面的包含函数.这意味着嵌套函数可以访问包含函数的所有参数和局部变量.尽管当一个函