【Python全栈-JavaScript】JavaScript变量的作用域

JavaScript变量的作用域全局变量

1.当在script中定义变量,在当前script中的定义前调用是undefined,没有定义该变量时调用报错。原因是在内存中开辟了该变量的存储位置,(当执行script时将所有定义的变量名先存到栈中)

当代码解释到该语句时才会将值存在栈中,没有执行之前调用该变量就是undefined,如果没有定义就不会在内存中开辟存储位置,因此就会报错。

2.如果在上一个script中调用下面的script的变量时,这时候不但没有值,而且没有开辟存储空间。因此,在上一个script中调用下面的变量永远都是报错的。

3.一旦定义变量完成后,在后面的script中都是可以任意调用,因为这些变量都是全局变量。

<script>
    console.log(xx);    //在另一个script中调用,而且调用后面的定义变量内容 会报错
</script>
<script>
    console.log(xx);    //undefined  xx变量名存在栈中,但还没有赋值
    var xx = 1;
    console.log(xx);    //xx是全局变量后面可以正常调用
</script>
<script>
    console.log(xx);    //xx=1  可以调用到
</script>

全局变量VS 局部变量

/*全局变量  就是在script标签下直接使用var定义的变量,
                全局变量可以应用于所有的代码中调用获取.范围非常大
      局部变量 就是在函数中使用var定义的变量,仅用于当前函数的执行范围内

                低耦合(减少耦合度)*/

    function fn1() {
        // 这里使用var定义的变量是有作用域的,他的范围仅限于该函数内部
        // 函数运行完成后,函数内定义的变量将会自动销毁
        var c=10;   //局部变量
        c+=3;
        console.log(c);
        //函数中修改全局变量后,全局变量就完成了修改,外面调用时,也是修改后的
        xx+=10;
    }
    fn1();      //xx=11
    fn1();      //xx=21
    console.log(xx,"______");   //21

全局变量和局部变量的重名

//全局变量和局部变量的重名
    var s1=10;
    function fn2() {
        /*
        (局部变量和全局变量重名,在函数中局部会覆盖全局)
        *  如果在函数中定义了某个局部变量名,那么在该函数中所有这个变量都是局部变量
        *  不能通过直接使用变量名的方法调用到外部的全局变量了
        * */
        var s1=20;
        s1+=20;     //40
        window.s1+=10;  //如果全局变量的名称在函数中和局部变量名相同,想要调用全局变量时,加上window前缀
        console.log(‘全局变量s1--->‘,window[‘s1‘]);     //全局变量也可以这样调用
        console.log(s1);    //局部变量 40
    }

    fn2();
    console.log(s1);    //全局变量s1  10

    var s2=10;
    function fn3() {
        //console.log(s2);//undefined,因为在函数中一旦第一局部变量,该函数中所有位置都是局部变量
        s2+=10;
        console.log(s2);//NaN,undefined+10
        var s2=20;
    }
    fn3();

原文地址:https://www.cnblogs.com/XJT2018/p/11051159.html

时间: 2024-08-01 13:42:34

【Python全栈-JavaScript】JavaScript变量的作用域的相关文章

Python全栈之路----函数进阶----作用域的查找空间

n = 10 def func(): n = 20 print('func:',n) def func2(): n = 30 print('func2:',n) def func3(): print('func3:',n) func3() func2() func() 问题:在func3()里打印的n的值是多少?   30 LEGB代表名字查找顺序:locals -> enclosing function -> globals -> _builtins_ locals 是函数内的名字空间

从头开始学JavaScript (二)——变量及其作用域

原文:从头开始学JavaScript (二)--变量及其作用域 一.变量 ECMAscript变量是松散型变量,所谓松散型变量,就是变量名称可以保存任何类型的数据,每个变量仅仅是一个用于保存值的占位符. 定义:var firstDemo; 二.变量的作用域 2.1基本概念 使用var 定义变量:定义该变量的作用域的局部变量,这种定义变量的方法也被成为显式声明. 这么说不理解的话可以看看下面这个简单粗暴的例子: test();function test(){var firstDemo="hello

Python全栈开发【基础三】

Python全栈开发[基础三]  本节内容: 函数(全局与局部变量) 递归 函数 一.定义和使用 函数最重要的是减少代码的重用性和增强代码可读性 1 def 函数名(参数): 2 3 ... 4 函数体 5 ... 6 返回值 函数的定义主要有如下要点: def:表示函数的关键字 函数名:函数的名称,日后根据函数名调用函数 函数体:函数中进行一系列的逻辑计算 参数:为函数体提供数据 返回值:当函数执行完毕后,可以给调用者返回数据. 总结使用函数的好处: 1.减少代码重用 2.保持一致性,易维护

python全栈开发目录

python全栈开发目录 linux命令 初识python python基础数据类型 函数编程.set.深浅拷贝 内置函数 文件操作 装饰器 迭代器和生成器 常用模块 初识类和对象 类和对象(进阶) 反射 异常处理 socket.IO多路复用 线程.进程.协程 HTML CSS JavaScript DOM文档操作 jQuery实例 web框架本质 Tornado mysql基础 mysql进阶 ..... 基本算法 递归--二分法查找 冒泡排序 更多 线程池

Python全栈

Linux 常用命令 Python全栈开发之1.输入输出与流程控制 Python全栈开发之2.运算符与基本数据结构 Python之实现一个简易计算器 Python之socketserver源码分析 Python全栈开发之3.数据类型set补充.深浅拷贝与函数 Python全栈开发之4.内置函数.文件操作和递归 Python全栈开发之5.几种常见的排序算法以及collections模块提供的数据结构 Python全栈开发之6.正则表达式 Python全栈开发之7.模块和几种常见模块以及format

python 全栈开发,Day30(第一次面向对象考试)

月考题: python 全栈11期月考题 一 基础知识:(70分) 1.文件操作有哪些模式?请简述各模式的作用(2分) 2.详细说明tuple.list.dict的用法,以及它们的特点(3分) 3.解释生成器(generator)与函数的不同,并实现且使用简单generator(3分) 4.如何理解lambda函数/表达式(2分) 5.a=10 b=20 def test(a,b): print(a,b) c = test(b,a) print(c) 上述代码中,打印出来的值a,b,c分别是什么

Python 全栈开发【第一篇】:目录

Python 全栈开发[第0篇]:目录 第一阶段:Python 开发入门 Python 全栈开发[第一篇]:计算机原理&Linux系统入门 Python 全栈开发[第二篇]:Python基础语法入门 Python 全栈开发[第三篇]:数据类型.字符编码.文件操作 第二阶段:函数编程&常用标准库 Python 全栈开发[第四篇]:函数.递归.生成器.迭代器 Pyhton 全栈开发[第五篇]:常用模块学习 第三阶段:面向对象编程&网络编程基础 Python 全栈开发[第六篇]:面向对象

python全栈开发学习目录

python全栈开发学习目录 第一章 计算机基础 第二章Python入门 第三章数据类型 第四章文件操作 第五章函数 第六章 模块 第七章 面向对象 第八章 网络编程 第九章 并发编程 第十章 数据库 第十一章 前端开发-html 第十一章 前端开发-css 附加:js特效 15个小demo 第十一章 前端开发-JavaScript 第十一章 前端开发-jQuery 第十一章 前端开发-bootstrap 第十二章 Django框架开发 ... 原文地址:https://www.cnblogs.

Python全栈开发【第一篇】:初识Python

Python全栈开发[第一篇] 本节内容: Python 的种类 Python 的环境 Python 入门(解释器.编码.变量.input输入.if流程控制与缩进.while循环) if流程控制与while循环练习题 基本数据类型前引 Python 的种类 Cpython Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上. Jyhton Python的Java实现,Jython会将Pyth

Python全栈开发

Python全栈开发 一文让你彻底明白Python装饰器原理,从此面试工作再也不怕了. 一.装饰器 装饰器可以使函数执行前和执行后分别执行其他的附加功能,这种在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator),装饰器的功能非常强大,但是理解起来有些困难,因此我尽量用最简单的例子一步步的说明这个原理. 1.不带参数的装饰器 假设我定义了一个函数f,想要在不改变原来函数定义的情况下,在函数运行前打印出start,函数运行后打印出end,要实现这样一个功能该怎么实现?看下面如何用