查看: 106|回覆: 0

JavaScript中的var与作用域

[複製鏈接]

2

主題

0

回帖

0

積分

热心网友

金币
0
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2012-4-2
發表於 2020-4-10 22:24:00 | 顯示全部樓層 |閲讀模式

JavaScript中没有块级作用域,“块级作用域”中声明的变量将被添加到当前的执行环境中

if(true) {
  var color = "blue";
}
console.log(color); // "blue"
function test() {
  if(true) {
    var color = "blue"; // (当前执行环境为函数test的局部作用域,函数外部无法访问,内部可以访问)
  }
  console.log("blue"); // "blue"
  function inner() {
    console.log(color); // "blue"
  }
  inner();
}
test();
console.log(color); // ReferenceError: color is not defined

在JavaScript中,由for语句创建的变量,即使在for循环执行结束后,也依旧会存在于循环外部的执行环境中。

for(var i = 0; i < 10; i++) {  
  var color = "blue";  
}
console.log(i); // 10 
console.log(color); // "blue"

使用var声明的变量会自动被添加到最接近的环境中。在函数内部,最接近的环境就是函数的局部环境;在with语句中,最接近的环境是函数环境。
如果初始化变量时没有使用var声明,该变量会自动被添加到全局环境

function add(num1, num2) {
  var sum = num1 + num2; // 用var声明
  return sum;
}
console.log(add(10, 20)); // 30
console.log(sum); // ReferenceError: sum is not defined
function add(num1, num2) {
  sum = num1 + num2; // 没有使用var声明
  return sum;
}
console.log(add(10, 20)); // 30
console.log(sum); // 30

如果局部环境中存在着同名标识符,就不会使用位于父环境中的标识符。

var color = "blue";
function getColor() {
  console.log(color); // undefined (变量提升)

  var color = "red"; 
  console.log(color); // red

  console.log(window.color); // blue

  return color;
}

console.log('return: ', getColor()); // return: red
console.log(color); // blue


来源:https://www.cnblogs.com/uakora/p/12676607.html
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部