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 目...