[英]Why parameters in JavaScript functions doesn't need var as type?
我知道这似乎是一个愚蠢的问题,但我实际上对以下情况感到困惑,如下......
我理解,对于每个变量,我们需要将数据类型指定为var,或者虽然这不是一个好的做法,但我们也可以不使用var 。 例如
我们可以使用
var name = "kishore";
或者干脆
name = "kishore";
但是,当涉及到我们作为函数中的参数传递的变量时,为什么它们不接受var? 如果我没有错,我认为这些就像其他变量一样,必须存储一些可以在该函数中访问的值。 如果我指定var则会给出错误。 我只想知道那里发生了什么。
var
不是数据类型,而是用于在适当范围内声明变量的关键字/运算符。 函数参数已经作用于它们作为参数的函数,并且没有改变它。 因此,使用var
将是多余的,并且不是必需的。
一些注释代码示例:
// A globally accessible function
var f1 = function (p1) { // p1 automatically scoped to f1 and available to all inner functions (like f2 below)
// A variable available in the scope of f1 and all inner functions (like f2 below)
var v1;
// f1, p1, v1, and f2 can be reached from here
var f2 = function (p2) { // p2 automatically scoped to f2
// A variable available in the scope of f2
var v2;
// f1, p1, v1, f2, p2, and v2 can be reached from here
};
};
var
关键字用于声明新变量。
参数不同。 它们在调用函数时已经存在,函数标头中的声明只是为已经存在的值提供名称。
arguments
集合包含传递给函数的值,您可以访问那里的参数,即使它们未在函数头中声明为参数。
例:
function test1(a, b, c) { show(a); show(b); show(c); } function test2() { show(arguments[0]); show(arguments[1]); show(arguments[2]); } test1(1, 2, 3); test2(1, 2, 3); // show in Stackoverflow snipper function show(n) { document.write(n + '<br>'); }
参数已经存储在arguments数组的函数作用域中,因此您不需要使用var:
function fun(t){
console.log(arguments)
};
fun('3');
输出是:
["3"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.