首页 > 解决方案 > 任何人都可以帮助我解决 var 在 javascript 中的这种奇怪行为吗?

问题描述

水果变量如何在 if 块中被覆盖,但颜色变量在功能块中不会被覆盖?

var fruit = "apple";

if(fruit){
    var fruit = "mango";
    console.log(fruit); // mango
}

console.log(fruit); // mango

var color = "blue";

function displayColor(){
    var color = "red";
    console.log(color);
}

displayColor(); // red

console.log(color);  // blue

标签: javascript

解决方案


不同之处在于该函数创建了一个本地范围。因此,它在函数范围内创建一个变量,并在函数完成时将其丢弃,保持 GLOBAL 颜色变量不变。

If 语句不创建范围,因此您只需在全局范围内重新定义 fruit 变量。


推荐阅读