js 函数的传值问题
Posted 墨初
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 函数的传值问题相关的知识,希望对你有一定的参考价值。
1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title></title> 6 <script type="text/javascript"> 7 8 /** 9 * 由于函数是对象,所以可以直接把函数通过参数传递进来 10 * @param fun 函数对象 11 * @param arg 参数 12 * @returns {*} 13 */ 14 function callFun(fun , arg){ 15 //第一个参数就是函数对象 16 return fun(arg); 17 } 18 19 function say(str){ 20 alert("hello:" + str); 21 } 22 23 function sum(num){ 24 return num + 100 ; 25 } 26 27 //调用了say函数 28 callFun(say , "Leon"); //hello:Leon 29 //调用了sum函数 30 alert(callFun(sum,20)); //120 31 32 function fn1(arg){ 33 34 /** 35 * 此时返回i的是一个函数对象, 36 */ 37 var rel = function(num){ 38 console.info("inner:" + num + " arg: " + arg); 39 return arg + num ; 40 } 41 console.info("outter arg: " + arg); 42 return rel; 43 } 44 45 //此时f是一个函数对象,可以完成调用 46 var f = fn1(20); //控制台输出值: outter arg: 20 47 console.info(f); //控制台输出值: function(num) 48 console.info("-------------"); 49 alert(f(11)); //控制台输出值:inner:11 arg: 20 运行结果:31 50 51 </script> 52 53 </head> 54 <body> 55 56 </body> 57 </html>
1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title></title> 6 7 <script type="text/javascript"> 8 9 console.info("10"+1); //111 10 //当进行减法运算时,会自动完成转换 11 console.info("10"-1); //9 12 13 //根据数字来进行排序的函数 14 function sortByNum(a,b){ 15 return a - b ; 16 } 17 18 var as = [1,2,11,33,12,190]; 19 //对应js而言,默认是按照字符串排序 20 as.sort(); 21 console.info(as); // [1, 11, 12, 190, 2, 33] 22 23 as.sort(sortByNum); 24 console.info(as); //[1, 2, 11, 12, 33, 190] 25 26 //根据数字来进行排序的函数 27 function sortByNum2(a,b){ 28 return parseInt(a) - parseInt(b) ; 29 } 30 var as2 = [1,2,"11px",33,"12px",190]; 31 as2.sort(sortByNum2); 32 console.info(as2); //[1, 2, "11px", "12px", 33, 190] 33 </script> 34 35 </head> 36 <body> 37 38 </body> 39 </html>
1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title></title> 6 7 8 9 </head> 10 <body> 11 <div id="person"> </div> 12 <script type="text/javascript"> 13 14 function Person(name,age){ 15 this.name = name ; 16 this.age = age ; 17 } 18 19 var p1 = new Person("Leon",39); 20 var p2 = new Person("John",23); 21 var p3 = new Person("Ada",41); 22 var ps = [p1,p2,p3]; 23 ps.sort(); 24 console.info(ps); //[Person { name="Leon", age=39}, Person { name="John", age=23}, Person { name="Ada", age=41}] 25 26 /** 27 * 使用sortByName sortByAge这两个方法来处理排序,带来的我呢体是需要为每一个属性都设置一个函数 28 * 显然不灵活 29 * 但是如果通过函数的返回值调用就不一样了 30 */ 31 function sortByName(obj1 , obj2){ 32 if(obj1.name > obj2.name ){ 33 return 1; 34 }else if(obj1.name == obj2.name ){ 35 return 0 ; 36 }else{ 37 return -1 ; 38 } 39 } 40 41 ps.sort(sortByName); 42 console.info(ps); //[Person { name="Ada", age=41}, Person { name="John", age=23}, Person { name="Leon", age=39}] 43 44 function sortByAge(obj1 , obj2){ 45 return obj1.age - obj2.age; 46 } 47 ps.sort(sortByAge); 48 console.info(ps); //[Person { name="John", age=23}, Person { name="Leon", age=39}, Person { name="Ada", age=41}] 49 50 51 //改造方法 52 function sortByProperty(propertyName){ 53 var sortFun = function(obj1 , obj2){ 54 if(obj1[propertyName] > obj2[propertyName]){ 55 return 1 ; 56 }else if(obj1[propertyName] == obj2[propertyName]){ 57 return 0 ; 58 }else{ 59 return -1 ; 60 } 61 } 62 return sortFun; 63 } 64 65 ps.sort(sortByProperty("age")); 66 console.info(ps); //[Person { name="John", age=23}, Person { name="Leon", age=39}, Person { name="Ada", age=41}] 67 68 ps.sort(sortByProperty("name")); 69 console.info(ps); //[Person { name="Ada", age=41}, Person { name="John", age=23}, Person { name="Leon", age=39}] 70 71 function show(){ 72 var p = document.getElementById("person"); 73 for(var i = 0 ; i < ps.length ; i ++){ 74 p.innerHTML += ps[i].name + " , " + ps[i].age + "<br/>"; 75 } 76 } 77 78 show(); 79 </script> 80 </body> 81 </html>
以上是关于js 函数的传值问题的主要内容,如果未能解决你的问题,请参考以下文章