我不确定何时将变量放在函数的顶部还是内部。
我尝试将变量放在顶部,有时放在函数内部。但是,在某些情况下,它并不总是像在这种情况下那样位于内部。
function transformFirstAndLast(array){
var first = array[0];
var last = array[array.length-1];
var squid = {};
squid[first] = last;
return squid;
}
vs
var first = array[0];
var last = array[array.length-1];
var squid = {};
function transformFirstAndLast(array){
squid[first] = last;
return squid;
}
第一个作品。但是,我认为您可以访问变量,因为它是全局范围的?我很困惑第二个为什么不起作用?
答案 0 :(得分:0)
第二个代码的问题是您试图访问不存在的内容:
var first = array[0]; // <-- trying to access 'array'
var last = array[array.length-1]; // <-- trying to access 'array'
var squid = {};
function transformFirstAndLast(array){ // <-- 'array' is an argument of this function, and therefore only exists inside of the function
squid[first] = last;
return squid;
}
在JavaScript中,您可以访问在您的作用域中声明的变量以及您的父母。
希望有帮助!
答案 1 :(得分:0)
让我们举一个最后的例子:
var first = array[0];
var last = array[array.length-1];
var squid = {};
function transformFirstAndLast(array){
squid[first] = last;
return squid;
}
在第1行,array
为undefined
,因为它不在当前范围内。变量array
仅存在于transformFirstAndLast
方法内。如果您调用此方法,将会发生:
squid
存在:{}
first
和last
均为undefined
undefined
(= first
)分配给对象squid
,其值为undefined
(= last
){ undefined: undefined }
您在需要它们的地方声明变量。在这种情况下,first
和last
仅在您有array
时才有意义,因此在方法内部。