我觉得我几乎可以抓住它......喜欢它直觉上有道理,但我不知道为什么细节。有人可以解释:为什么全局变量不受使用相同变量名称的函数影响?
为什么在这里,全球ARR不受影响功能
arr = [1,2,3]
function test(arr, a, b) {
arr = arr.filter(item => (a < item && item < b))
console.log(arr) // [2]
}
test(1, 3)
console.log(arr) // [1,2,3]
为什么在这里,全球ARR受影响的功能
arr = [1,2,3]
function test(a, b) {
arr = arr.filter(item => (a < item && item < b))
console.log(arr) // [2]
}
test(1, 3)
console.log(arr) // [2]
编辑另一个外线外例。这里为什么全球ARR受影响的功能之外,即使再次ARR作为参数
arr = [1,2,3]
function test(arr, a, b) {
for (let i = 0; i < arr.length; i++) {
let val = arr[i];
if (a >= val || val >= b) {
arr.splice(i, 1);
i--;
}
}
console.log(arr) // [2]
}
console.log(arr) // [2]
可能的重复:[JavaScript中变量的范围是什么?](https://stackoverflow.com/q/500431/8173752) –
您需要重写您的问题,因为您的代码根本无法工作。您正在尝试在数字上使用过滤器方法。 – zfrisch