javascript未分配的默认函数参数

时间:2012-08-13 20:54:11

标签: javascript node.js optional-parameters

在以下功能中:

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

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

3 个答案:

答案 0 :(得分:3)

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

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

由于!a可以为0,因此空字符串为''null

答案 1 :(得分:0)

是的,在此上下文中a在函数内部有一个范围。您甚至可以使用它来覆盖局部范围的全局变量。例如,您可以执行function ($){....}(JQuery);,因此您知道$将永远是JQuery框架的变量。

答案 2 :(得分: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'