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
。我怎么能做到这一点?
答案 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