10个javascript的迷你小技巧

  在之前的编程语言排行榜中,我们曾介绍过转正在即的JavaScript语言,正如文章中阐明的那样,JavaScript不仅是最具活力的脚本语言,还是是最有用的编程语言之一。因为绝大多数的浏览器都和它兼容,你可以在这些浏览器中使用它。JavaScript被接受的相当快,因为它是如此的简单,而且使用范围相当广泛。许多程序员过去常常认为JavaScript是一门“玩具语言”,但是,AJAX进入市场后表现出了完全相反的一面,它让JavaScript展现出了完全不同的能力和功能。

  由于这个发明的出现,程序员现在已经可以创建带有桌面应用程序效果的Web应用程序了,这是很有益处的,因为数据可以更快地改变。这是一些迷你技巧,它们可以帮助初学者更好地使用JavaScript。JavaScript的使用范围相当广泛,而且还有这么多的风格,所以它可以有很多的技巧。另外,虽然它很多的编程方法,但是我只挑选了10个技巧,我认为这些技巧对初学者理解JavaScript来说是很好的的起点。

  1,在一个数组的最后添加一个元素

  这个技巧可以让你使用Length属性在一个数组的最后添加一个元素,因为Length属性比数组的最后一个元素的下标多1。这个方法和“push”方法是相同的。例如:

 

  1. var myArray = [];  
  2. myArray[myArray.length] = 'New Element';   

  2,调整一个数组的长度

  Length属性不是只读的,所以你可以设置Length属性的值。而且,你可以使用它增大或缩小数组的长度。例如:

 

  1. var myArray = [1,2,3];    
  2. myArray.length // 3    
  3. myArray.length = 2; //Delete the last element    
  4. myArray.length = 20 // add 18 elements to the array; the elements have the undefined value. 

  3,使用“!!”把任意数据类型转换成Boolean

  这个技术可以让你使用“!!”把任意数据类型(比如string, number或integer)转换成Boolean。例如:

 

  1. var myString = '23255';    
  2. typeof myString; //String    
  3.      
  4. myString = !!myString;    
  5. typeof myString  //Boolean  

  4,把Number转换成String

  这个技巧可以让你在number的结尾添加一个空的string来把number转换成string,例如:

 

  1. var mynumber = 234;    
  2. typeof mynumber; //Number    
  3.      
  4. mynumber += '';    
  5. typeof mynumber; //String  

  5,了解一个函数需要多少个变量

  这是一个伟大的技巧,可以让你准确地知道一个函数需要多少个变量。例如: 

  1. function add_nums(num1, num2){    
  2.     return num1 + num2;    
  3. }    
  4. add_nums.length // 2 is the amount of parameters expected by the function add_nums  

  6,使用“arguments”对象来了解一个函数接收到了多少个参数

  这个技术可以让你使用“arguments”对象来了解一个函数接收到了多少个参数。例如:

 

  1. function add_nums(){    
  2.     return arguments.length;    
  3. }    
  4.      
  5. add_nums(23,11,32,56,89,89,89,44,6); //this return the number 9  

  当你需要检查参数个数的有效性的时候,或者当你需要创建一个不确定参数个数的函数的时候,这个技巧是很有用的。

 

  1. function sum_three_nums( ){    
  2.  if(arguments.length!=3) throw new Error('received ' + arguments.length + ' parameters and should work with 3');    
  3.      
  4. }    
  5.      
  6. sum_three_nums(23,43); //Return the error message    
  7.      
  8. function sum_num(){    
  9.     var total = 0;    
  10.     for(var i=0;i<arguments .length;i++){    
  11.         total+=arguments[i];    
  12.     }    
  13.     return total;    
  14. }    
  15.      
  16. sum_num(2,34,45,56,56);  
7,把对象当成参数,来组织和改善函数

  在现代Web开发中,对象最普遍的一个用途是把它们当成函数的参数。要记住函数参数的这个规则总是很困难的;但是,使用一个对象是十分有好处的,因为我们不必再担心参数的规则了。而且,它更有组织性,可以让用户更好的理解我们要做什么。这个方法可以让你把对象当成参数,来组织和改善函数。例如:

 

  1. function insertData(name,lastName,phone,address){    
  2.     code here;    
  3. }  

  重构以后的代码是这样的:

 

  1. function insertData(parameters){    
  2.     var name = parameters.name;    
  3.     var lastName = parameters.lastName;    
  4.     var phone = parameters.phone;    
  5.     var address = parameters.address;    
  6. }  

  当你要使用默认值的时候,它也是十分有用的。例如:

 

  1. function insertData(parameters){    
  2.     var name = parameters.name;    
  3.     var lastName = parameters.lastName;    
  4.     var phone = parameters.phone;    
  5.     var address = parameters.address;    
  6.     var status = parameters.status || 'single' //If status is not defined as a property   
  7. //in the object the variable status take single as value    
  8. }  

  现在,要使用这个函数十分的简单;我们可以用两种方式来发送数据:

 

  1. //Example 1    
  2. insertData({name:’Mike’, lastName:’Rogers’, phone:’555-555-5555’,address:’the address’, status:’married’});    
  3.      
  4.      
  5. //Example 2    
  6. var myData = {       name:’Mike’,     
  7.                          lastName:’Rogers’,     
  8.                                phone:’555-555-5555’,    
  9.                              address:’the address’,     
  10.                                 status:’married’    
  11.                        };    
  12.      
  13. insertData(myData);  

  8,函数就是数据

  函数就是像strings或numbers那样的数据,我们可以把它们当成函数参数来传递它们,这可以创建十分令人惊讶而又“威风凛凛”的Web应用程序。这个方法是非常有用的,几乎所有的主流框架都使用了这个方法。例如:

 

  1. function byId(element, event, f){    
  2.     Document.getElementById(element).['on'+event] = f; //f is the function that we pass as parameter    
  3. }    
  4.      
  5. byId('myBtn','click',function(){alert('Hello World')});    
  6.      
  7. Another example of functions as data:    
  8.      
  9. //Example 1    
  10. function msg(m){    
  11.     Alert(m);    
  12. }    
  13.      
  14. //Example 2    
  15. var msg = function(m){ alert(m);}   

  这些函数几乎是完全相同的。唯一的区别是使用它们的方式。例如:第一个函数,在你声明它以前,你就可以使用它了;但是第二个函数只有声明以后才能使用:

 

  1. //Example 1    
  2. msg('Hello world'); //This will work    
  3.      
  4. function msg(m){    
  5.     alert(m);    
  6. }    
  7.      
  8. //Example 2    
  9. msg('Hello world'); //Does not work because JavaScript cannot find the function msg because is used before is been declared.    
  10.      
  11. var msg = function(m){ alert(m)}  

  9,扩展本地对象

  虽然一些JavaScript的领袖不推荐这个技术,但是它已经被一些框架使用了。它可以让你针对JavaScript API来创建一些辅助性的方法。

 

  1. Array.prototype.sum = function(){    
  2.     var len = this.length;    
  3.     total = 0;    
  4.     for(var i=0;i<len ;i++){    
  5.         if(typeof this[i]!= 'number'continue;    
  6.          total += this[i];    
  7.     }    
  8.     return total;    
  9. }    
  10.      
  11. var myArray = [1,2,3,'hola'];    
  12. myArray.sum();    
  13.      
  14.      
  15.      
  16.      
  17. Array.prototype.max = function(){    
  18.     return Math.max.apply('',this);    
  19. }   

  10,Boolean

  注意它们之间的区别,因为这会节省你调试脚本的时间。

 

  1. '' == '0'          // false    
  2. 0 == ''            // true    
  3. 0 == '0'           // true    
  4. false == 'false'   // false    
  5. false == '0'       // true    
  6. false == undefined // false    
  7. false == null      // false    
  8. null == undefined  // true    
  9. true == 1          // true    
  10. '' == null         // false    
  11. false == ''        // true  

  如果你在其他地方看过这些脚本,那么这些技巧可以帮助你融会贯通。这些技巧甚至还不及JavaScript所有功能的冰山一角,但是这是一个开始!请不要客气,留下你的评论,问题,额外的技巧或疑虑吧,但是请记住,这是一篇针对初学者的文章!!

posted @ 2012-03-19 09:42  前望  阅读(161)  评论(0编辑  收藏  举报