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>
时间: 2024-08-07 21:06:26

js 函数的传值问题的相关文章

JSF页面中使用js函数回调后台bean方法并获取返回值的方法

由于primefaces在国内使用的并不是太多,因此,国内对jsf做系统.详细的介绍的资料很少,即使有一些资料,也仅仅是对国外资料的简单翻译或者是仅仅讲表面现象(皮毛而已),它们的语句甚至还是错误的,很可能会误导使用者. 相对来说,看国内的那些仅仅是翻译过来的文章或书籍不如直接看国外的官方文档或资料来的实在,在我讲述jsf页面中如何使用js调用后台bean方法之前,先给大家说几个国外的资料.在primefaces官方网站上,你可以搜索到几乎所有你需要的东西,primefaces官网为:http:

js获取url传值的方法

这篇文章主要介绍了js获取url传值的方法,实例分析了字符串分割与正则分析两种方法,并补充了一个基于正则匹配实现的js获取url的get传值函数,需要的朋友可以参考下 js获取url参数值: index.htm?参数1=数值1&参数2=数值2&参数3=数据3&参数4=数值4&...... 静态html文件js读取url参数 根据获取html的参数值控制html页面输出 一.字符串分割分析法 这里是一个获取URL带QUESTRING参数的JAVASCRIPT客户端解决方案,相

函数的传值实例(递归,阶乘,排序)

前一篇简单了介绍了一下函数的传值,知道了函数本身可以当做另外一个函数的参数场地进去.这里在介绍一个函数传值的实例: function fn(num1){ function fn1(num2){ return (num2+num1) } return fn1 } var fn3=fn(20); alert(fn3(11)); alert(fn3); 这里第一个返回的就是31,第二个返回的是fu的定义函数. 在这里我么可以这样理解:函数的第一层就是让设置参数的一层,var fn3=fn(20);这里

jsp想js,action传值

1.struts2 action如何向JSP的JS函数传值 action中定义变量 public class TestAction extends ActionSupport implements ServletRequestAware {     private String state = "test"; } JSP的JS函数中引用变量 <script type=text/javascript>     function getStatus() {         va

JS函数大全 莫名其妙找到的

1 .document.write(""); 输出语句 2 .JS中的注释为// 3 .传统的HTML文档顺序是:document->html->(head,body) 4 .一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document) 5 .得到表单中元素的名称和值:document.getElementById("表单中元素的ID号").name(或value) 6 .

webBrowser调用外部js文件和js函数(转载)

原文链接:http://fy5388.blog.163.com/blog/static/56499537201012594314130/ webBrowser调用外部js文件和js函数 '第一种方法:webbrowser动态调用html和js代码,都是动态的:代码示例: webBrowser1.Navigate("about:blank");webBrowser1.Document.OpenNew(True);webBrowser1.Document.Write("<H

JavaScript入门:006—JS函数的定义

JS函数的声明.声明函数的格式如下: function 函数名(参数列表){ //函数语句: return 返回值; } 来看具体的函数声明.1.普通函数 <script type="text/javascript"> function ShowHint() { alert("普通函数"); } </script> 2.带参数的函数 <script type="text/javascript"> functio

一个奇怪的JS函数

今天在分析一个jQuery插件源码的时候,发现了一个奇怪的函数. // add leading zeros var pad = function(x){return (1e15+""+x).slice(-2)}; 首先1e15是什么意思? 也不是十六进制表示法. 不管三七21,直接F12打开命令窗口,执行下看看,结果是1后面有15个0. 原来1e15是科学计数法,表示1乘以10的15次方. var y=123e5; // 12300000 var z=123e-5; // 0.0012

Button的Click事件与js函数的两种不同顺序触发方式

先执行js,或者先执行Click事件,最近就遇到了这个问题,开始弄了两个按钮分别执行,那才叫一个蛋疼... 1.先执行js,再执行Button的Click函数 <asp:Button ID="btn_delete" runat="server" Text="提交" onclick="button1_Click"/> 前台js为 <script language="javascript"&g