声明全局变量很简单,只需将标识符后跟等号和所需的值。您可以在任何地方执行此操作,例如为函数调用或循环内部设置参数时。但是当我想要这个
变量是本地的东西似乎变得更受限制。我不能在函数调用中声明局部变量,并且将var x=i+3;
放在循环中只会反复重新声明变量。在文件中有没有我忽略的东西?或者这只是它的方式?
...
obj.do_my_thing(cached_int = 4 + cars.amount(), true);
...
for( var e in list ) cached_float += cached_int/0.5;
console.log(cached_float);
...
我想要的是:
...
obj.do_my_thing(var cached_int = 4 + cars.amount(), true);
...
for( var e in list ) var cached_float += cached_int/0.5;
console.log(cached_float);
...
答案 0 :(得分:1)
我无法在函数调用中声明局部变量
如果您尝试从两次调用同一函数访问同一变量,则必须在外部范围内声明该变量
E.g。
function foo() {
var i = 0;
function bar() {
i++;
}
bar();
alert(i);//1
bar();
alert(i);//2
}
答案 1 :(得分:1)
我无法在函数调用中声明局部变量
是的,你可以:
function foo() {
var bar = 1; // Local variable
window.baz = 2; // Global variable
}
foo();
console.log(bar); // Undefined
console.log(baz); // 2
...并且将var x = i + 3;在循环内部只需重复声明变量
您可以在循环之外声明变量:
var x = 0;
for (var i = 0; i < 1000; i++)
x = i + 3;
console.log(x); // 1002
这很好,但不像我可以在移动中声明局部变量那样优雅。
你可以在一定程度上:
for (var i =0; i < 1000; i++) {
// Declare window.x if it doesn't already exist
if (!window.x)
window.x = 0;
x = i + 3;
}
console.log(x); // 1002
对不起,我相信window.x是全球性的。如果这就是你的意思。
您可以将变量分配给您的函数:
function foo() {
for (var i =0; i < 1000; i++) {
// Declare foo.x if it doesn't already exist
if (!foo.x)
foo.x = 0;
x = i + 3;
}
console.log(x); // 1002
}
答案 2 :(得分:0)
我想回答我自己的问题,像我这样的人为了解决同一个“问题”而浏览互联网:你可以在函数声明的参数中简单地声明本地范围的变量。这样您就不需要使用var关键字设置变量:
function q(param){
var b = my_array.indexOf(param);
if(b!=-1) my_array.splice(b,1);
}
function p(param, b){
if((b=my_array.indexOf(param))!=-1) my_array.splice(b,1); // ♥ ♥ ♥
}
p('hello world');