4

在以下函数中:

foo = function(a){
    if (!a) a = "Some value";
    // something done with a
    return a;
}

当未声明“a”时,我想为函数的其余部分分配一个默认值,虽然“a”是一个参数名称并且没有声明为“var a”,但它是该函数的私有变量吗?执行函数后,它似乎没有显示为全局变量,这是标准(即一致)的可能用途吗?

4

3 回答 3

3

它是函数范围内的私有变量。它对全局范围是“不可见的”。
至于你的代码,你最好这样写

foo = function(a){
    if (typeof a == "undefined") a = "Some value";
    // something done with a
    return a;
}

因为!a可以为真0,空字符串''或只是null

于 2012-08-13T21:01:13.700 回答
0

是的,在这种情况下a,函数内部有一个范围。您甚至可以使用它来覆盖本地范围的全局变量。例如,您可以这样做function ($){....}(JQuery);,您知道这$将始终是 JQuery 框架的一个变量。

于 2012-08-13T20:56:21.687 回答
0

参数始终具有私有函数范围。

var a = 'Hi';
foo = function(a) {
    if (!a) a = "Some value";
        // something done with a
        return a;
    };
console.log(a); // Logs 'Hi'
console.log('Bye'); // Logs 'Bye'
于 2012-08-13T20:58:42.967 回答