4 回答

TA貢獻1862條經(jīng)驗 獲得超6個贊
js采用的是詞法作用域,意即對任意變量,其上下文是定義變量時的上下文,而非使用時的上下文。
item是forEach中匿名函數(shù)的局部變量,函數(shù)l定義在匿名函數(shù)外部,無法訪問函數(shù)內部變量。
你題目的實現(xiàn)可用于動態(tài)作用域的語言,目前絕大多數(shù)語言采用詞法作用域

TA貢獻1934條經(jīng)驗 獲得超2個贊
function l(item) {
console.log(item);
}
[1, 2, 3].forEach(item => {
l(item);
});
把參數(shù)傳進去

TA貢獻1816條經(jīng)驗 獲得超6個贊
function l(){
console.log(this);
}
[1, 2, 3].forEach(item => {
l.call(item);
});

TA貢獻1805條經(jīng)驗 獲得超9個贊
不存在的,l()的執(zhí)行環(huán)境是全局,訪問不到item的,除非用傳遞參數(shù)的方式(之前有人答過),或者訪問l()的執(zhí)行環(huán)境(全局)的item。
var item;
function l() {
console.log(item);
}
[1, 2, 3].forEach(ele => {
item=ele;
l();
}
再或者,將l()的執(zhí)行環(huán)境放到forEach里面,也就是把l()定義到forEach中。
[1, 2, 3].forEach(item => {
function l() {
console.log(item);
}
l();
});
添加回答
舉報