考虑到一个函数调用另一个函数,不同JavaScript函数中的变量名称相同

时间:2013-03-27 14:05:19

标签: javascript

我正在 JavaScript 做一些小工作,我想避免出现问题,所以我事先要问。

我可以使用两个不同的变量,并在不同的函数中将它们命名为相同,因为其中一个函数会调用另一个函数吗?

那么,当我在第二个函数中定义变量时,它会解释为两个不同的变量,还是会从第一个函数重写原始变量的值? (或者,由于具有该名称的变量已经存在,它会抛出错误吗?)

以下是一个例子:

function first()
{
var a = somevalue;
second();
}

function second()
{
var a = differentvalue;
}

谢谢!

2 个答案:

答案 0 :(得分:3)

在函数内声明的变量是该函数的本地变量,并且不会与其他地方具有相同名称的变量冲突。

你甚至可以拥有一个同名的全局变量,函数内部的代码只会看到局部变量。

示例:

var a; // global variable

function first() {
  var a; // local variable in first
  second();
}

function second() {
  var a; // local variable in second
}

(全局变量当然应该尽量少用,但最好知道你可以拥有一个不受任何可能存在的全局变量影响的局部变量。)

函数内部的局部变量不仅是函数的本地变量,它实际上是函数的执行的本地变量。如果再次调用该函数,则会创建一个新变量,如果该函数调用自身(递归),则每个级别都将拥有它自己的变量。

答案 1 :(得分:2)

是的,您可以,只要您不忘记var关键字:变量的范围是声明它的函数或全局范围。从函数外部无法访问它们声明的变量。