如何在全局范围内引用未定义的参数

时间:2016-05-30 04:05:42

标签: javascript

var a = 2;
function f(a) {return a;}
console.log(f(1));// return 1
console.log(f());// return undefined, but I want to make it return 2...

f()返回undefined,但我想在全局范围内引用变量a。我怎么能做到这一点?

3 个答案:

答案 0 :(得分:5)

var a = 2;
function f(b) {
    return b || a;
}

你需要为函数参数使用不同的名称,否则它将遮蔽外部a并且不会给你任何返回它的机会。然后,决定返回哪个值就是一件简单的事情。在这里,我使用了一个简单的 falsey 检查,您可能想要或不想使用更详细的内容,例如typeof b === 'undefined'等。

答案 1 :(得分:2)

使用 arguments.length 来测试参数是否已传递给该函数:



var a = 2;
function f(b) {
  if(arguments.length===1) return b;
  return a;
}

console.log(f(3));          //3
console.log(f(undefined));  //undefined
console.log(f(0));          //0
console.log(f());           //2




答案 2 :(得分:1)

你可以这样做,检查变量是否已经定义。

var a = 2;
function f(x) {
    return (typeof x==="undefined")? a : x;
}
console.log(f(1));// return 1
console.log(f());// return 2