面試題小試牛刀

2021-10-07 18:21:17 字數 1787 閱讀 5233

1、

//考是否細心的題

const res =

;for

(var i =

0; i <

5; i++);

console.

log(res)

;// 3

/* 解析:

在上面**中,for迴圈語句之後新增了乙個分號,在js中,會判定這個語句已結束,因此可以知道for迴圈執行了四次空的語句,當退出迴圈時,

此時的i值為5,然後執行 ,因此最終輸出為 6

*/

2、可參考mdn的運算子優先順序

/*包含變數提公升,this指向,運算子優先順序,原型,繼承,全域性變數汙染、物件屬性、原型屬性優先順序*/

function

foo();

return

this

;//此處this指向了window物件,this指向window物件,foo函式返回的是window物件,相當於執行window.getname()

} foo.

getname

=function()

foo.prototype.

getname

=function()

vargetname

=function()

function

getname()

foo.

getname()

;//2

getname()

;//4

console.

log(

foo())

foo().

getname()

;//1

getname()

;//1

newfoo.getname()

;//2 //將getname函式作為了建構函式來執行,執行之後彈出2

newfoo()

.getname()

;//3

newnew

foo().

getname()

;//3 初始化foo函式的例項化物件,之後將其原型上的getname函式作為建構函式再一次new,所以最終結果為3

/* 解析:

第一問:foo.getname 訪問的是 foo 函式儲存的靜態屬性。所以彈出 2

第二問:直接呼叫,就會訪問當前上文的作用域當中,名為 getname的函式,而在上面**中,

存在乙個函式宣告和乙個函式表示式,函式宣告存在函式提公升

而函式表示式在這裡將函式宣告給覆蓋了,所以彈出 4

第三問:首先執行了 foo 函式,然後呼叫其返回值物件的 getname 屬性函式,無 var 宣告,所以先向當前 foo 函式作用域內尋找 getname 變數但並

沒有找到,就會向當前的函式作用域上層找是否有 getname 變數,找到了alert(4)函式,將此變數賦值給 function(),將外層的

作用域內 getname 函式修改了,window中的getname已經被修改為alert(1),所以執行結果為1

第四問:會直接呼叫getname函式,相當於window.getname(),foo函式執行後把全域性的getname函式給修改了,

所以結果就是foo()執行修改之後的getname函式,執行結果為 1

第五問:點的優先順序比new無引數時優先順序高,但new foo.getname() <==> new (foo.getname)();這樣就變為了new有引數了,而函式呼叫()優先順序低,

所以彈出2

*/

注意點:

boost graph lib 小試牛刀

最近要做社會網路的社群發現,發現用bgl能減少不少 量。經過一番調研發現bgl封裝的很牛叉,dijkstra等演算法統統具備,奈何自己對泛型程式設計不太熟,遇到問題還是很糾結。primer泛型程式設計 演算法部分和stl原始碼分析接下來有時間一定要讀下。下面僅以鄰接鍊錶和自定義節點為例 typede...

Anti Debug 小試牛刀

本文整理了日常生活中遇到的一些anti debug技術,除非特殊說明,均適用於mac ios開發 作為第一篇正式博文,會不定期更新,謝謝大家.123 4567 89 define pt deny attach 31 include intmain 程式正常執行,會輸出hello 但是程式載入到gdb...

tsung小試牛刀

linux環境 centos5.5 1 tsung安裝 tar zxvf tsung 1.4.2.tar.gz configure make sudo make install 安裝後執行 which tsung,如果顯示 usr bin tsung 表明安裝成功 2 設定 如果沒有 tsung 目...