JavaScript 作用域

  • JavaScript作用域

    作用域确定变量的可访问性(可见性)。
  • JavaScript函数作用域

    在JavaScript中有两种类型的作用域:
    • 局部作用域
    • 全局作用域
    JavaScript具有函数作用域:每个函数都创建一个新的作用域。作用域确定这些变量的可访问性(可见性)。函数内部定义的变量不能从函数外部访问(可见)。
  • JavaScript局部变量

    在JavaScript函数中声明的变量,变为函数的局部变量。局部变量具有函数作用域:它们只能在函数内访问。
    // 这里的代码不能使用carName
    
    function myFunction() {
      var carName = "Volvo";
    
      // 这里的代码可以使用carName
    
    }
    尝试一下
    由于局部变量仅在其函数内部被识别,因此具有相同名称的变量可用于不同的函数。函数启动时会创建局部变量,并在函数完成时删除。
  • JavaScript全局变量

    在函数外声明的变量变为全局变量。全局变量具有全局范围:网页上的所有脚本和函数都可以访问它。
    var carName = "Volvo";
    
    // 这里的代码可以使用carName
    
    function myFunction() {
    
      // 这里的代码也可以使用carName
    
    }
    尝试一下
  • JavaScript变量

    在JavaScript中,对象和函数也是变量。
    来自代码不同部分的变量,作用域决定对象和函数的可访问性。
  • 自动全局

    如果为尚未声明的变量赋值,它将自动成为全局变量。此代码示例将声明一个全局变量carName,即使该值是在函数内部分配的。
    myFunction();
    
    // 这里的代码能够使用 carName 
    
    function myFunction() {
      carName = "Volvo";
    }
    尝试一下
  • 严格的模式

    所有现代浏览器都支持在“严格模式”下运行JavaScript。您将在本教程的后续章节中了解有关如何使用严格模式的更多知识。
    全局变量不会在“严格模式”下自动创建。
  • HTML中的全局变量

    使用JavaScript,全局范围是完整的JavaScript环境。在HTML中,全局范围是window对象。所有全局变量都属于window对象。
    var carName = "Volvo";
    
    // 这里的代码可以使用window.carName
    尝试一下
    除非您打算,否则不要创建全局变量。您的全局变量(或函数)可以覆盖窗口变量(或函数)。任何函数(包括window对象)都可以覆盖全局变量和函数。
  • JavaScript变量的生命周期

    JavaScript变量的生命周期在声明时开始。功能完成后,将删除局部变量。在Web浏览器中,当您关闭浏览器窗口(或选项卡)时,将删除全局变量,但仍可用于加载到同一窗口中的新页面。
    提示:函数参数(参数)作为函数内的局部变量。