在以下功能中:
foo = function(a){
if (!a) a = "Some value";
// something done with a
return a;
}
当未声明“a”时,我想为函数的其余部分分配一个默认值,虽然“a”是一个参数名而不是声明为“var a”,它是否是一个私有变量功能?它在执行函数后似乎不是一个全局变量,这是一个标准的(即一致的)可能的用途吗?
答案 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'