zoukankan      html  css  js  c++  java
  • js作用域

    任何程序设计语言都有作用域的概念,简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。在JavaScript中,变量的作用域有全局作用域和局部作用域两种。

    1、全局作用域:

    在代码中任何地方都能访问到的对象拥有全局作用域,一般来说以下几种情形拥有全局作用域:

      (1)最外层函数和在最外层函数外面定义的变量拥有全局作用域,例如:

    var authorName="";
    function doSomething(){
        var blogName="";
        function innerSay(){
            alert(blogName);
        }
        innerSay();
    }
    alert(authorName);     //minoz
    alert(blogName);     //not defined
    doSomething();    //minozMin
    innerSay();     //not defined

      (2)所有末定义直接赋值的变量自动声明为拥有全局作用域,例如:

    function doSomething(){
        var authorName="minoz";
        blogName="minozMin";
        alert(authorName);
    }
    doSomething();     //minoz
    alert(blogName);     //minozMin
    alert(authorName);     //not defined

        变量blogName拥有全局作用域,而authorName在函数外部无法访问到。

      (3)所有window对象的属性拥有全局作用域

        一般情况下,window对象的内置属性都拥有全局作用域,例如window.name、window.location、window.top等等。

    2、局部作用域:

      和全局作用域相反,局部作用域一般只在固定的代码片段内可访问到,最常见的例如函数内部,所有在一些地方也会看到有人把这种作用域称为函数作用域,例如下列代码中的blogName和函数innerSay都只拥有局部作用域。

    function doSomething(){
        var blogName="minozMin";
        function innerSay(){
            alert(blogName);
        }
        innerSay();
    }
    alert(blogName);     //not defined
    innerSay();     //not defined
  • 相关阅读:
    zabbix proxy配置实战案例
    zabbix agent的主动工作模式实战案例
    使用Zabbix监控Nginx状态页实战案例
    基于Ambari的WebUI部署Storm服务
    Golang的高级数据类型-指针(Pointer)实战篇
    Golang的高级数据类型-结构体(struct)实战篇
    Golang的高级数据类型-字典(map)实战篇
    Golang的高级数据类型-切片(slice)实战篇
    Golang的高级数据类型-数组(array)实战篇
    Golang的异常处理实战篇
  • 原文地址:https://www.cnblogs.com/minozMin/p/8022869.html
Copyright © 2011-2022 走看看