任何一位寫網頁程式的程式設計師, 一定都知道有JavaScript這個程式語言,
但它在某個層面而言,它也是最不受重視的程式語言, 我們就稍為的談談它吧. ![]() JavaScript是早期由Netscape Navigator(網景公司)的工程師Brendan Eich, 所開發出來的程式語言,最初版本掛載於1996年的Netscape2.0上。 想當初網際網路剛起飛,用Netscape的時候,Raz幾乎都是上聊天室 當時正是CGI(Common Gateway Interface)大行其道的時候,而Raz觸接的環境 大多以Perl來寫CGI居多,雖然後來有學著改CGI程式, 但Raz始終沒有把Perl修成正果… JavaScript原本要命名為 LiveScript 的,為什麼會變成JavaScript呢? 或許有Java的啟發才有它的誕生,但真正的原因是Netscape與Sun公司的行銷策略。 在Netscape將JavaScript移交給ECMA(一個標準化組職)後,誕生了ECMAScript, 我們現在使用的大多為ECMAScript第3版(ECMA-262 3rd Edition手冊下載), 而各瀏覽器又以不同的語言對應這個標準, 若你使用IE8,那就是JScript(ver6),若是FireFox,則是JavaScript(1.8)。 不過我們通常不管這些稱號、版本上的差異,一般我們都統稱為JavaScript, 未來會有ECMAScript第4版,也就是JavaScript 2.0,目前還在研發中。 JavaScript重要嗎?
JavaScript在傳統網頁設計的領域中,許多設計師認為它是個很簡單的程式語言,所以通常都不太深入研究,但一個極具互動功能的網站,又怎能少得了JavaScript? 當然,會有人告訴你可以整個網站使用Flash或SliverLight來實作, 但絕大多數的功能我們都還是會以JavaScript來做,例如我們常用的Ajax, 像我們使用ASP.NET中的ServerControl,有許多的功能都仰賴JavaScript完成。 JavaScript是OOP(Object-oriented programming)的嗎?
我想這個答案很直接,沒錯,JavaScript一樣是物件導向語言,雖然不像寫C#、VB、Java等程式語言,有支援強型別的物件導向, 但JavaScript一樣有封裝、繼承...等等的物件導向概念, 只不過因為沒有class、private、public等關鍵字,所以實作的方式比較不一樣。 JavaScript的實值與參考類型
較特殊的值為:
JavaScript常用的類型如下:
奇特的true/false規則:
比較奇特的一點是,當變數值為false、0、""、NaN、null、undefined的時候,JavaScript是個強大的程式語言
為什麼說JS是個強大的程式語言?C#在3.0才加入了類別擴充、匿名函式等新功能,但這些功能在JS中卻早就存在了,或許就是因JS並不是強型別程式語言, 所以這些功能不但很好用,而且還很容易造成濫用。 我們來看一段JavaScript的Code..
var AddBoth = function( a, b ){ return a + b; };
var varA = 10;
var varB = 20;
var Result = AddBoth
(
(function(x){ return x*x; })(varA),
varB
);
//這邊我們會得到 120
window.alert( 'Result = ' + Result );
我們知道var AddBoth是一個匿命函式,而比較令人費解的是第6行的寫法, 其實它也是一個匿命函式,以兩組小括號為準,第一個括號輸入函式, 第二個括號則是傳入參數。 不過其實JavaScript還有許多很有趣的功能,我們再來看一個奇怪一點的Code..
//寫一個製造函式的函式
var MakeSumFunc = function( filter )
{
return function()
{
var Total = 0;
for (var i = 0, j = arguments.length; i < j; i++)
{
if( (filter) ? filter(arguments[i]) : true ) Total += arguments[i];
}
return (Total);
}
};
//這樣我們可以得到一個統計所有數值的函式
var FuncSun = MakeSumFunc();
var SumResult = FuncSun(1,2,3,4,5,6,7,8,9);
//理所當然, 這邊得到的值是 45
window.alert( SumResult );
//那今天我們如果要為每個值加入判斷規則, 例如只加入奇數
//寫一個奇數會回傳true的函式
function IsOdd(number){ return !(number % 2 == 0); }
//然後產生新函式
var FuncOddSum = MakeSumFunc(IsOdd);
var OddSumResult = FuncOddSum(1,2,3,4,5,6,7,8,9);
//然後我們就會得到 25
window.alert( OddSumResult );
JavaScript是弱類型的程式語言,它連函式的傳入參數都可以省略, Raz利用這個特性以及"奇特的true/false規則",寫了上面這個範例, 當然Raz只是舉了一個小小的例子,您還是可以有自已的寫法, JS寫久了,許多人都會有自已一套寫法及應用方式, 最後呢,Raz只能說...... JavaScript真的是變化無窮,只是你有沒有去發現而已.
2009-08-16 19:09:00 By RazgrizHsu
821 Visits
|
文章分類 Category關於站長 About
大家來噗浪 Plurk武林高手連結 Links免責聲明 Disclaimer
|