在之前的程式設計語言熱門排行榜中,我們曾介紹過轉正在即的JavaScript語言,正如文章中闡明的那樣,JavaScript不僅是最具活力的指令碼語言,還是是最有用的程式設計語言之一。因為絕大多數的瀏覽器都和它相容,你可以在這些瀏覽器中使用它。JavaScript被接受的相當快,因為它是如此的簡單,而且使用範圍相當廣泛。許多程式員過去常常認為JavaScript是一門“玩具語言”,但是,AJAX進入市場後表現出了完全相反的一面,它讓JavaScript展現出了完全不同的能力和功能。
由於這個發明的出現,程式員現在已經可以建立帶有傳統型應用程式效果的Web應用程式了,這是很有益處的,因為資料可以更快地改變。這是一些迷你技巧,它們可以協助初學者更好地使用JavaScript。JavaScript的使用範圍相當廣泛,而且還有這麼多的風格,所以它可以有很多的技巧。另外,雖然它很多的編程方法,但是我只挑選了10個技巧,我認為這些技巧對初學者理解JavaScript來說是很好的的起點。
1,在一個數組的最後添加一個元素
這個技巧可以讓你使用Length屬性在一個數組的最後添加一個元素,因為Length屬性比數組的最後一個元素的下標多1。這個方法和“push”方法是相同的。例如:
-
- var myArray = [];
- myArray[myArray.length] = 'New Element';
-
2,調整一個數組的長度
Length屬性不是唯讀,所以你可以設定Length屬性的值。而且,你可以使用它增大或縮小數組的長度。例如:
-
- var myArray = [1,2,3];
- myArray.length // 3
- myArray.length = 2; //Delete the last element
- myArray.length = 20 // add 18 elements to the array; the elements have the undefined value.
3,使用“!!”把任意資料類型轉換成Boolean
這個技術可以讓你使用“!!”把任意資料類型(比如string, number或integer)轉換成Boolean。例如:
- var myString = '23255';
- typeof myString; //String
-
- myString = !!myString;
- typeof myString //Boolean
4,把Number轉換成String
這個技巧可以讓你在number的結尾添加一個空的string來把number轉換成string,例如:
- var mynumber = 234;
- typeof mynumber; //Number
-
- mynumber += '';
- typeof mynumber; //String
5,瞭解一個函數需要多少個變數
這是一個偉大的技巧,可以讓你準確地知道一個函數需要多少個變數。例如:
- function add_nums(num1, num2){
- return num1 + num2;
- }
- add_nums.length // 2 is the amount of parameters expected by the function add_nums
6,使用“arguments”對象來瞭解一個函數接收到了多少個參數
這個技術可以讓你使用“arguments”對象來瞭解一個函數接收到了多少個參數。例如:
- function add_nums(){
- return arguments.length;
- }
-
- add_nums(23,11,32,56,89,89,89,44,6); //this return the number 9
當你需要檢查參數個數的有效性的時候,或者當你需要建立一個不確定參數個數的函數的時候,這個技巧是很有用的。
- function sum_three_nums( ){
- if(arguments.length!=3) throw new Error('received ' + arguments.length + ' parameters and should work with 3');
-
- }
-
- sum_three_nums(23,43); //Return the error message
-
- function sum_num(){
- var total = 0;
- for(var i=0;i<arguments .length;i++){
- total+=arguments[i];
- }
- return total;
- }
-
- sum_num(2,34,45,56,56);
7,把對象當成參數,來組織和改善函數
在現代Web開發中,對象最普遍的一個用途是把它們當成函數的參數。要記住函數參數的這個規則總是很困難的;但是,使用一個對象是十分有好處的,因為我們不必再擔心參數的規則了。而且,它更有組織性,可以讓使用者更好的理解我們要做什麼。這個方法可以讓你把對象當成參數,來組織和改善函數。例如:
- function insertData(name,lastName,phone,address){
- code here;
- }
重構以後的代碼是這樣的:
- function insertData(parameters){
- var name = parameters.name;
- var lastName = parameters.lastName;
- var phone = parameters.phone;
- var address = parameters.address;
- }
當你要使用預設值的時候,它也是十分有用的。例如:
- function insertData(parameters){
- var name = parameters.name;
- var lastName = parameters.lastName;
- var phone = parameters.phone;
- var address = parameters.address;
- var status = parameters.status || 'single' //If status is not defined as a property
//in the object the variable status take single as value
- }
現在,要使用這個函數十分的簡單;我們可以用兩種方式來發送資料:
- //Example 1
- insertData({name:’Mike’, lastName:’Rogers’, phone:’555-555-5555’,address:’the address’, status:’married’});
-
-
- //Example 2
- var myData = { name:’Mike’,
- lastName:’Rogers’,
- phone:’555-555-5555’,
- address:’the address’,
- status:’married’
- };
-
- insertData(myData);
8,函數就是資料
函數就是像strings或numbers那樣的資料,我們可以把它們當成函數參數來傳遞它們,這可以建立十分令人驚訝而又“威風凜凜”的Web應用程式。這個方法是非常有用的,幾乎所有的主流架構都使用了這個方法。例如:
- function byId(element, event, f){
- Document.getElementById(element).['on'+event] = f; //f is the function that we pass as parameter
- }
-
- byId('myBtn','click',function(){alert('Hello World')});
-
- Another example of functions as data:
-
- //Example 1
- function msg(m){
- Alert(m);
- }
-
- //Example 2
- var msg = function(m){ alert(m);}
這些函數幾乎是完全相同的。唯一的區別是使用它們的方式。例如:第一個函數,在你聲明它以前,你就可以使用它了;但是第二個函數只有聲明以後才能使用:
- //Example 1
- msg('Hello world'); //This will work
-
- function msg(m){
- alert(m);
- }
-
- //Example 2
- msg('Hello world'); //Does not work because JavaScript cannot find the function msg because is used before is been declared.
-
- var msg = function(m){ alert(m)}
9,擴充本機物件
雖然一些JavaScript的領袖不推薦這個技術,但是它已經被一些架構使用了。它可以讓你針對JavaScript API來建立一些輔助性的方法。
- //We create the method prototype for our arrays
- //It only sums numeric elements
-
- Array.prototype.sum = function(){
- var len = this.length;
- total = 0;
- for(var i=0;i<len ;i++){
- if(typeof this[i]!= 'number') continue;
- total += this[i];
- }
- return total;
- }
-
- var myArray = [1,2,3,'hola'];
- myArray.sum();
-
-
-
-
- Array.prototype.max = function(){
- return Math.max.apply('',this);
- }
-
10,Boolean
注意它們之間的區別,因為這會節省你調試指令碼的時間。
- '' == '0' // false
- 0 == '' // true
- 0 == '0' // true
- false == 'false' // false
- false == '0' // true
- false == undefined // false
- false == null // false
- null == undefined // true
- true == 1 // true
- '' == null // false
- false == '' // true
如果你在其他地方看過這些指令碼,那麼這些技巧可以協助你融會貫通。這些技巧甚至還不及JavaScript所有功能的冰山一角,但是這是一個開始!請不要客氣,留下你的評論,問題,額外的技巧或疑慮吧,但是請記住,這是一篇針對初學者的文章!!我希望能收到一些開發人員同行的來信!Enjoy!