javascript閉包面試題 如何理解閉包這一概念?
如何理解閉包這一概念?一般來說,閉包是一個函數(shù)嵌套函數(shù),函數(shù)用作函數(shù)的返回值。閉包是可以包含自由(未綁定到特定對象)變量的代碼塊;這些變量不是在代碼塊內(nèi)或任何全局上下文中定義的,而是在定義代碼塊的上下
如何理解閉包這一概念?
一般來說,閉包是一個函數(shù)嵌套函數(shù),函數(shù)用作函數(shù)的返回值。閉包是可以包含自由(未綁定到特定對象)變量的代碼塊;這些變量不是在代碼塊內(nèi)或任何全局上下文中定義的,而是在定義代碼塊的上下文中定義的(局部變量)。術(shù)語“閉包”來自要執(zhí)行的代碼塊(因為自由變量包含在代碼塊中,這些自由變量及其引用的對象不會被釋放)和為自由變量提供綁定的計算環(huán)境(范圍)的組合。在PHP、Scala、scheme、Common Lisp、Smalltalk、groovy、JavaScript、ruby、python、go、Lua、objective C、swift和Java(java8及以上版本)中,我們可以找到對閉包的不同程度的支持。
c 和Lua各自的優(yōu)缺點(diǎn)是什么呢各位大神?
Lua本身是用標(biāo)準(zhǔn)C語言編寫的,它的優(yōu)點(diǎn)是小巧靈活,而且是一種動態(tài)的語言,能夠被解釋和執(zhí)行,因此它適合在游戲和一些嵌入式環(huán)境中使用。至于上面提到的動態(tài)弱類型、垃圾收集、函數(shù)編程、閉包等等,您至少需要閱讀一本Lua書籍(用Lua編程)才能有一個大致的了解。這些理念不是一蹴而就的,需要不斷積累。
Lua的速度為什么比Python快?
Lua也是一種腳本語言,但是它有精巧的功能,可以緩存字節(jié)碼,而且它的性能非常強(qiáng)。
nginx在web服務(wù)器中的地位沒有動搖,特別是在負(fù)載均衡方面。除了硬件負(fù)載平衡,nginx是軟件負(fù)載平衡的高峰。由于這樣一個強(qiáng)大的軟件選擇Lua作為插件,我們可以看到Lua的性能不會更差。
在以C為主力的游戲開發(fā)領(lǐng)域,框架的主流程用C實現(xiàn),業(yè)務(wù)層用Lua實現(xiàn)。這種搭配方式在當(dāng)年確實是一樣的。
Python的性能比PHP差得多,更不用說與Lua相比了。
Lua有哪些優(yōu)點(diǎn),適用于哪些場景?
lua最大的優(yōu)點(diǎn)是它很小,絕對小,可以嵌入任何程序,我們幾乎可以忽略它的大小增加。這種語言的功能基本完備。作為配置文件,可以實現(xiàn)非常復(fù)雜的配置邏輯??纯茨ЙF世界里的各種插件和宏就知道了。事實上,他們都很好。我唯一的抱怨是它不能處理UTF-8邏輯。所有字符串都被視為字節(jié)流。大多數(shù)時候,這不是一個大問題,但不幸的是,我的工作與Unicode和字符串有很多關(guān)系,所以我一直非常敏感地支持這樣的函數(shù)。