繁体   English   中英

为什么JavaScript函数中的参数不需要var作为类型?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM