美文网首页
javascript解析顺序和变量作用域

javascript解析顺序和变量作用域

作者: ssttIsme | 来源:发表于2019-12-01 19:39 被阅读0次

javascript解析顺序和变量作用域

作用域:指的就是一段代码的作用范围。
作用域可以提高程序的逻辑性和安全性,减少名字的冲突

一、变量的作用域

1.全局变量

在代码中任何地方都能够访问得到的变量,拥有全局的作用域。
A.最外层韩都外面定义的变量
B.没有定义直接赋值的变量,拥有全局属性

    var name="zhangsan";
    function visit() {
        document.write(name);
    }
    visit();

输出 zhangsan

    var name="zhangsan";
    function visit() {
        document.write(name);
        function visit2(){
            document.write(name);
        }
        visit2();
    }
    visit();

输出 zhangsanzhangsan

2.局部变量

只能在固定的代码片段(函数片段)中访问得到。
A.在函数内部定义的变量

    var name="zhangsan";
    function visit() {
        var name="lisi";
        document.write(name);
    }
    visit();
    document.write(name);

输出 lisizhangsan
B.参数也是局部变量

function f(num) {
    document.write(num);
}
f(1);
document.write(num);

输出 1
然后报错 num is not defined

function f(num) {
    var num=2;
    document.write(num);
}
f(1);

输出 2

二、javascript预解析顺序

A、<script></script>
B、解析代码运行的环境
C、对标识符(关键字)(var function)进行预解析,解析到相应的环境下
D、如果还有<script></script>再按照上面的步骤依次解析

    document.write(fruit);
    var fruit="apple";

输出 undefined

    var name="zhangsan";
    function visit() {
        document.write(name);
        var name="lisi";

    }
    visit();

输出 undefined

三、名词解释

(1)环境:

1.宿主环境:(浏览器)
2.执行环境:(所执行的代码在上下文[文档]中的环境)
执行的环境决定了变量和函数的访问权限
A.全局环境
B.函数环境

    var name="zhangsan";
    function visit() {

        var name="lisi";
        document.write(name);
        function  visit2() {
            document.write(name);
        }
        visit2();
    }
    visit();

输出 lisilisi
C.eval();

(2)作用域

一段代码的作用范围。(作用域由环境决定)

(3)作用域链

在一个执行环境中有权访问的变量和函数,能够有机地进行访问

    var name="zhangsan";
    var fruit="apple";
    function visit() {
        var name="lisi";
        document.write(name);
        function  visit2() {
            document.write(name);
            document.write(fruit);
        }
        visit2();
    }
    visit();

输出 lisilisiapple


作用域链

相关文章

  • javascript解析顺序和变量作用域

    javascript解析顺序和变量作用域 作用域:指的就是一段代码的作用范围。作用域可以提高程序的逻辑性和安全性,...

  • 07-JavaScript作用域和预解析

    JavaScript作用域 JavaScript中有全局作用域和局部作用域 相同作用域内不能有同名的变量和函数 不...

  • JavaScript 中的变量作用域

    JavaScript 中的变量作用域 JavaScript中的变量作用域被定义为函数作用域。 变量的值在定义该变量...

  • JavaScript 作用域和作用域链

    JavaScript 作用域 作用域就是变量与函数的可访问范围。在JavaScript中,变量的作用域有全局作用域...

  • 进击的js

    JavaScript解析器将当前作用域内声明的所有变量和函数都会放到作用域的开始处,但是,只有变量的声明被提前到作...

  • 作用域、作用域链

    作用域 在 JavaScript 中, 作用域为可访问变量,对象,函数的集合。 作用域下浏览器的操作 预解析(找v...

  • js作用域、作用域链、闭包

    作用域 1.javascript局部作用域 变量在函数内部声明,变量为局部作用域. 2.javascript全局变...

  • JavaScript作用域学习笔记

    @(JS技巧)[JavaScript, 作用域] JavaScript作用域学习笔记 概念: 作用域就是变量与函数...

  • javaScript作用域

    作用域为可访问变量的集合。 在javaScript中,对象和函数同样也是变量, 在javaScript中作用域为可...

  • 闭包的实现原理

    作用域和作用域链 在 JavaScript 中, 作用域为可访问变量,对象,函数的集合。 全局变量 变量在函数外定...

网友评论

      本文标题:javascript解析顺序和变量作用域

      本文链接:https://www.haomeiwen.com/subject/qtktgctx.html