面試題 閉包問題

2021-08-16 20:39:45 字數 526 閱讀 9373

(function())();

console.log(y);

console.log(x);

console.log(y)輸出結果為:1;

console.log(x)輸出結果為:error,直接報錯;

解析宣告變數:從右向左賦值,可分解為:y = 1;var x = y;可見 y 為全域性變數,x為閉包函式內的區域性變數,在console.log輸出時是在閉包函式外部獲取變數,所以獲取不到 x 而直接輸出error,y 為全域性變數且值為 1,故輸出1。

var name = 'wold';

(function()else

})();

輸出結果為:goodbay jack;

解析:在閉包函式的內部無法訪問到外部變數,也就是在外部定義的var   name = 『wold』,在程式執行到if語句是沒有獲取到,但是在函式內部已經定義了name變數,在使用在賦值之前,所以為undefined型別,所以輸出goodbay jack;

JS閉包 面試題

function setobj p p.name bb var p setobj p console.log p 程式的執行結果是aa 匿名函式的this一般是指向window var number 2 var obj var fn1 obj.fn1 console.log number 匿名函式呼...

js閉包面試題

請看以下 在輸出臺的輸出情況 答案是4400,4401,4399,4400 首先,test函式做了什麼?test在自己的函式作用域內建立乙個變數n,以及乙個函式add,這時add就作為乙個閉包,它可以在外部訪問到test內部的變數n,並對其進行加法。然後test返回乙個物件,這個物件有乙個n變數以及...

javascript閉包經典面試題

首先第一行,先看 var a fun 0 把0傳入 fun n,o 中,那麼 n 0,o undifine,而 fun n,o return 了 所以a就等於 所以a.fun 1 function 1 fun 1,0 所以會輸出0,同樣a.fun 2 function 2 fun 2,0 輸出0,以...