亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

js函數中的函數問題?

js函數中的函數問題?

蠱毒傳說 2018-09-14 10:05:03
function test(){    var arr = [];    for(var i = 0; i < 5; i++){         arr[i] = function a() {            return i;         }         a();     }    return arr; } test();//a is not definedfunction c(){    function d(){        console.log('2');     }     d(); } c(); //2為什么第一個是undefined呢,不是明明定義了a嗎在之前?
查看完整描述

1 回答

?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

函數表達式的函數名字只屬于它自己的作用域


以你第二段代碼為樣本改成函數表達式:

function c(){    var test = function d(){        console.log('2');
    }
    test();
}
c(); //2

上面這樣是沒有問題的,但是改成這樣:

function c(){    var test = function d(){        console.log('2');
    }
    d();
}
c();  //Uncaught ReferenceError: d is not defined

引用錯誤ReferenceError
作用域中查找標識符但是最后沒有找到的時候就會拋出這個錯誤。
也就是說當前作用域中壓根就沒有以d作為標識符的變量(函數)。
(順帶一提,如果在這里找到了d標識符,但是它不是函數無法運行,會拋出TypeError類型錯誤。)

那么,標識符d到底在哪個作用域?
答案是它自己:

function c(){    var test = function d(){        console.log(d);
    }
    test();
}
c();

這里最后會把函數d打印出來,在函數d內部是可以使用d標識符的。


查看完整回答
反對 回復 2018-10-16
  • 1 回答
  • 0 關注
  • 577 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號