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
。我怎么能做到这一点?如何引用全局范围内的未定义参数
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
。我怎么能做到这一点?如何引用全局范围内的未定义参数
使用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
var a = 2;
function f(b) {
return b || a;
}
您需要使用不同的名称该函数的参数,否则这将阴影外a
,并且不会给你任何机会回到它。然后决定返回哪个值是一件简单的事情。在这里,我使用一个简单的虚假的检查,你可能会也可能不想使用像typeof b === 'undefined'
等更详细的东西。
你可以做这样的事情,它检查变量是否已被定义。
var a = 2;
function f(x) {
return (typeof x==="undefined")? a : x;
}
console.log(f(1));// return 1
console.log(f());// return 2
是实现由'window'一个好的做法呢? – Sayakiss
不是。理想情况下,你永远不应该有任何东西附加到'窗口'。 – deceze
这将为'f(0)'和'f(false)'返回'2'。 'undefined'测试有帮助,但是使用'arguments.length'可以确保'b'丢失。 –