JS經典題目01

2021-10-11 14:39:03 字數 1086 閱讀 4730

var out = 25,

inner =

};console.log((inner.func, inner.func)());

console.log(inner.func());

console.log((inner.func)());

console.log((inner.func = inner.func)());

25,20,20,25

**解析:這道題的考點分兩個

1.作用域

2.運算子(賦值預算,逗號運算)

先看第乙個輸出:25,因為(inner.func, inner.func)是進行逗號運算子,逗號運算子就是 運算前面的,

返回最後乙個,舉個栗子

var i=0,j=1,k=2;

console.log((i++,j++,k))//返回的是k的值 2 ,如果寫成k++的話 這裡返回的就是 3

console.log(i);//1

console.log(j);//2

console.log(k);//2

回到原題(inner.func, inner.func)就是返回inner.func而inner.func只是乙個匿名函式

function ()

而且這個匿名函式是屬於window的

則變成了

(function () )()

此刻的this–》window

所以out 是25

第二和第三個console.log的作用域都是 foo,也就是他們執行的其實是

foo.func();

foo作用域中是有out變數的,所以結果是20

第四個console.log

考查的是乙個等號運算inner.func = inner.func 其實返回的是運算的結果,

舉個栗子

var a=2,b=3;

console.log(a=b)//輸出的是3

所以inner.func = inner.func 返回的也是乙個匿名函式

function ()

此刻 道理就和第乙個console.log一樣了 輸出的結果是 25

js的一道經典題目

今天碰到一道題,裡面既包含了匿名函式的知識,也包含了預編譯,函式的傳參 形參 感覺迷迷糊糊的,所以想著做個總結。var foo function foo console.log foo.n foo console.log foo.n 上面的 可以寫成這樣,看解釋 1 var foo 2 functi...

js的一道經典題目

今天碰到一道題,裡面既包含了匿名函式的知識,也包含了預編譯,函式的傳參 形參 感覺迷迷糊糊的,所以想著做個總結。var foo function foo console.log foo.n foo console.log foo.n 上面的 可以寫成這樣,看解釋 1 var foo 2 functi...

LeedCode經典題目

目錄 尋找陣列中心索引 至少是其他數字兩倍的最大數 加一 給定乙個整數型別的陣列 nums,請編寫乙個能夠返回陣列 中心索引 的方法。我們是這樣定義陣列中心索引的 陣列中心索引的左側所有元素相加的和等於右側所有元素相加的和。如果陣列不存在中心索引,那麼我們應該返回 1。如果陣列有多個中心索引,那麼我...