在哪个彩票网站是小黄人做头像的,j2ee网站开发实例,企业网站建设的策划书,咸阳做网站的公司电话JavaScript 变量作用域与函数调用机制#xff1a;var 示例详解 在 JavaScript 中#xff0c;作用域和闭包是理解变量生命周期和行为的核心概念。通过以下这段代码#xff0c;我们将详细分析如何在不同的作用域内使用 var 关键字#xff0c;并解释相关的变量访问规则 代码解…JavaScript 变量作用域与函数调用机制var 示例详解 在 JavaScript 中作用域和闭包是理解变量生命周期和行为的核心概念。通过以下这段代码我们将详细分析如何在不同的作用域内使用 var 关键字并解释相关的变量访问规则 代码解析
var name Hello, World; // 1. 全局作用域中定义了 name值为 Hello, Worldfunction echo() {console.log(name); // 2. 输出 name 的值
}function env() {var name hello, kitty; // 3. 在 env 函数内定义了局部变量 nameecho(); // 4. 调用 echo 函数
}env(); // 5. 调用 env 函数执行流程 全局作用域 在全局作用域中var name “Hello, World” 赋值了一个全局变量 name其值为 “Hello, World” var name Hello, World;定义函数 echo() 函数 echo 定义了一个 console.log(name)该函数用于输出 name 变量的值 var name Hello, World;定义函数 env() 函数 env 内部首先声明了一个局部变量 name并赋值为 “hello, kitty”。这个 name 变量只在 env 函数内部有效。然后env 函数调用了 echo() function env() {var name hello, kitty;echo();}调用 env() 函数 当 env() 被调用时JavaScript 会执行 env 函数中的代码在 env() 内部name 被声明为 “hello, kitty”但是在调用 echo() 时echo() 函数会输出 name此时发生了作用域链的查找
关键点作用域链Scope Chain 和 函数调用时的作用域
echo() 函数中的 name 是在全局作用域中查找的因为 echo() 是在全局作用域中定义的。当 echo() 被调用时它会首先在自己所在的作用域中查找 name如果没有找到就会继续在外部作用域中查找即查找全局作用域局部变量 name在 env() 内部定义的 name只对 env() 函数有效对 echo() 函数没有影响 由于 echo() 没有在其作用域内找到 name它就会在外部的作用域中查找。在此情况下echo() 找到了全局作用域中的 name其值为 “Hello, World”
作用域链 echo() 函数查找 name 时会首先查看其自己的作用域然后查看外层作用域直到全局作用域。env() 中的局部 name 对 echo() 的执行没有影响因为 echo() 查找的是全局作用域中的 name。
总结 作用域链的概念 JavaScript 中的函数作用域遵循词法作用域规则变量的查找顺序是从当前函数的作用域开始依次向外查找直到全局作用域为止。 全局与局部变量的关系 即使在一个函数内部声明了与全局变量同名的局部变量这个局部变量仅对函数内部有效。函数外部的同名变量如果有不会被覆盖。 var 和作用域 使用 var 声明的变量在其作用域内有效如果函数内有同名变量局部变量会覆盖函数内部的代码但不会影响外部作用域中的变量