我覺得我幾乎可以抓住它......喜歡它直覺上有道理,但我不知道爲什麼細節。有人可以解釋:爲什麼全局變量不受使用相同變量名稱的函數影響?
爲什麼在這裏,全球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