2016-01-21 37 views
2

我正在閱讀John Resig JavaScript Ninja book。在那裏他寫道,函數具有可執行的「超級能力」。JavaScript:「可執行的功能」是什麼意思?

我不明白「可執行」是什麼意思。

這是否意味着JavaScript解釋器將以字符串形式存在的代碼轉換爲機器代碼?然後由CPU執行哪一個?但在這種情況下:其他數據也由CPU處理。區別在哪裏?

有人可以用非計算機科學畢業生可以理解的方式解釋術語「可執行」嗎?

+0

字符串也可執行,如果你將它們傳遞給eval –

回答

0

這意味着函數是cpu可以執行的一組指令。相比其他編程結構像變量和對象,只是保存數據,這是一種特殊的..

像JavaScript這樣的語言specialy功能是對象。 「正在執行」是preatty特殊的。

so imageine like this。 a是可變的對象,這意味着它擁有數據

a = 10 

計算機知道a具有價值10,但它不知道這意味着什麼,或者用它做什麼。 在另一方面,一個函數對象持有說明

function a(){do{...}while(b=10)} 

這menas計算機就知道該怎麼做。它可以採取a的指示,並逐一執行它們。

+0

是的。說得通。非常感謝。 – bo256

+0

可以說一個函數包含CPU的指令。 – bo256

+0

是的..當然,這取決於語言和編譯器/解釋器的實際實現..但在概念意義上,函數是一組可執行指令。 – CaldasGSM

3

我假設一個更簡單的解釋:它意味着可以調用一個函數(作爲一個特殊對象),而一個對象通常可能不是。

var foo = function() {}; 
foo(); // call or "execute" it 

var bar = {}; 
bar(); // TypeError: bar is not a function 

從硬件和操作系統的POV有(非執行)數據和可執行指令的區別,但高級語言如JavaScript的設計使人們擺脫這樣的細節。

相關問題