javascript中的函数参数 - 本地或全局

时间:2016-12-22 12:51:52

标签: javascript

我是一名新学员,学习编写前端开发代码。我想知道JavaScript函数中的全局变量和局部变量。我了解本地和全球,但功能参数如何,是局部的还是全局的?

我是否应该始终将函数定义为function add(a,b)function add(var a, var b)

在某处我读到,在函数内部没有var关键字的情况下定义的任何变量都会变为全局变量。这一点令我困惑。

4 个答案:

答案 0 :(得分:0)

第一个。 function add(a,b)

使用var关键字实际上存在语法错误。

  

在某处,我读到在函数内部没有var关键字的情况下定义的任何变量都变为全局

这是真的,但只有当你做c = 'something'时才这样。函数参数始终是本地范围的。

答案 1 :(得分:0)

参数是函数的局部参数,但这只是事实的一半,因为对象是通过引用传递的。因此,如果你的函数接受一个对象并修改了这个对象的任何成员,那么这个改变也会在函数之外看到(因为它是同一个对象)。

在节点shell中尝试以下操作来演示:

var obj = { a:0 };
obj;
function f(o) { o.a++; }
f(obj);
obj;
  

$ node

     

var obj = {a:0};

     

未定义

     

OBJ;

     

{a:0}

     

function f(o){o.a ++};

     

未定义

     

F(OBJ);

     

未定义

     

OBJ;

     

{a:1}

答案 2 :(得分:0)

function add(a,b)中,a和b只能在函数中访问,因此它们是该函数的本地函数。

function add(var a, var b)语法不正确。你不能把var放在那里。

答案 3 :(得分:0)

您必须声明函数add(a,b)等函数。 a和b是你在调用它时给函数的参数。

它们在声明时不存在,并且是变量的本地。它们或多或少是对调用它时传递给函数的变量的引用。

var num1 = 4;
var num2 = 3;

function add(a, b){
   return a + b;
}

var result = add(num1, num2);

// result : 7

在没有关键字var的括号函数内声明的变量变为全局变量,例如结果如下:

function add(a, b){
  result = a + b ;
  }