在以下函数中:
foo = function(a){
if (!a) a = "Some value";
// something done with a
return a;
}
当未声明“a”时,我想为函数的其余部分分配一个默认值,虽然“a”是一个参数名称并且没有声明为“var a”,但它是该函数的私有变量吗?执行函数后,它似乎没有显示为全局变量,这是标准(即一致)的可能用途吗?
在以下函数中:
foo = function(a){
if (!a) a = "Some value";
// something done with a
return a;
}
当未声明“a”时,我想为函数的其余部分分配一个默认值,虽然“a”是一个参数名称并且没有声明为“var a”,但它是该函数的私有变量吗?执行函数后,它似乎没有显示为全局变量,这是标准(即一致)的可能用途吗?
它是函数范围内的私有变量。它对全局范围是“不可见的”。
至于你的代码,你最好这样写
foo = function(a){
if (typeof a == "undefined") a = "Some value";
// something done with a
return a;
}
因为!a
可以为真0
,空字符串''
或只是null
。
是的,在这种情况下a
,函数内部有一个范围。您甚至可以使用它来覆盖本地范围的全局变量。例如,您可以这样做function ($){....}(JQuery);
,您知道这$
将始终是 JQuery 框架的一个变量。
参数始终具有私有函数范围。
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'