一道經典的面試題,下面用a b c d 標註方便講解
解析:1.foo.getname(); // 2物件.屬性 這裡foo作為函式物件,getname()作為foo的函式屬性,所以看題目b處
2.getname(); // 4
這裡主要看題目d e 處,d處為乙個函式表示式,e宣告了乙個函式
兩者內容相同,我們可以根據函式優先規則 函式宣告》變數
那e處提到題目前面
根據js自上而下執行,先執行題目e處,再把d處賦值給getname,所以覆蓋了e處
如下
//e 宣告了乙個getname函式
let getname
getname = function()
//d 函式表示式
getname = function() ;
3.foo().getname(); // 1**
這裡看題目a處
因為foo打了小括號,所以就是呼叫foo函式
並且給全域性變數getname重新賦值
4.getname(); // 1
因為前面3執行題目a處,給getname賦值了
5. new foo.getname(); // 2
物件.屬性,這裡看b處
new foo.getname==new(foo.getname())
所以這裡先呼叫了foo.getname,執行結果為2
然後再例項化返回值2
6.new foo().getname(); // 3
因為foo打了小括號,所以就是呼叫foo函式
並且前面有new,就意味著是用new呼叫的foo函式
那麼此時相當於是把foo當做了建構函式
相當於(new foo()).getname()
所以返回了foo例項化出來的物件,這個物件自己沒有
getname方法,所以就訪問原型裡的getname,既題目c處
7.new new foo().getname(); // 3
這裡可以看做new((new foo()).getname())
右上可得 new(3)
所有例項化返回值為3
寫在最後,都是個人理解,題目講解方式參照部落格大佬排版
python經典面試 python經典面試題
基礎部分 1.將列表按照下列規則排序,補全 1.整數在前,負數在後2.正數從小到大3.負數從大到小 lst 7,8,5,4,0,2,5 補全 sorted lst,key lambda x 答案 lst 7,8,5,4,0,2,5 lst sorted lst,key lambda x int x ...
python經典程式 python經典程式
輸入輸出 判斷輸入整數是否在 0,100 之間 num eval input 請輸入乙個整數 if num 100 or num 0 判斷 0,100 print 輸入的整數小於0或大於100 else print 輸入整數在0到100之間 含 temps input 斐波拉列數列 a,b 0,1 ...
python經典例項 python經典例項
本書是python經典例項解析,採用基於例項的方法編寫,每個例項都會解決具體的問題和難題。主要內容有 數字 字串和元組,語句與語法,函式定義,列表 集 字典,使用者輸入和輸出等內建資料結構,類和物件,函式式和反應式程式設計,web服務,等等。python是傑出的指令碼語言,可以為應用程式注入動力,提...