js 函数的传值问题
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script type="text/javascript"> /**
* 由于函数是对象,所以可以直接把函数通过参数传递进来
* @param fun 函数对象
* @param arg 参数
* @returns {*}
*/
function callFun(fun , arg){
//第一个参数就是函数对象
return fun(arg);
} function say(str){
alert("hello:" + str);
} function sum(num){
return num + 100 ;
} //调用了say函数
callFun(say , "Leon"); //hello:Leon
//调用了sum函数
alert(callFun(sum,20)); //120 function fn1(arg){ /**
* 此时返回i的是一个函数对象,
*/
var rel = function(num){
console.info("inner:" + num + " arg: " + arg);
return arg + num ;
}
console.info("outter arg: " + arg);
return rel;
} //此时f是一个函数对象,可以完成调用
var f = fn1(20); //控制台输出值: outter arg: 20
console.info(f); //控制台输出值: function(num)
console.info("-------------");
alert(f(11)); //控制台输出值:inner:11 arg: 20 运行结果:31 </script> </head>
<body> </body>
</html>
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title> <script type="text/javascript"> console.info("10"+1); //111
//当进行减法运算时,会自动完成转换
console.info("10"-1); //9 //根据数字来进行排序的函数
function sortByNum(a,b){
return a - b ;
} var as = [1,2,11,33,12,190];
//对应js而言,默认是按照字符串排序
as.sort();
console.info(as); // [1, 11, 12, 190, 2, 33] as.sort(sortByNum);
console.info(as); //[1, 2, 11, 12, 33, 190] //根据数字来进行排序的函数
function sortByNum2(a,b){
return parseInt(a) - parseInt(b) ;
}
var as2 = [1,2,"11px",33,"12px",190];
as2.sort(sortByNum2);
console.info(as2); //[1, 2, "11px", "12px", 33, 190]
</script> </head>
<body> </body>
</html>
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title> </head>
<body>
<div id="person"> </div>
<script type="text/javascript"> function Person(name,age){
this.name = name ;
this.age = age ;
} var p1 = new Person("Leon",39);
var p2 = new Person("John",23);
var p3 = new Person("Ada",41);
var ps = [p1,p2,p3];
ps.sort();
console.info(ps); //[Person { name="Leon", age=39}, Person { name="John", age=23}, Person { name="Ada", age=41}] /**
* 使用sortByName sortByAge这两个方法来处理排序,带来的我呢体是需要为每一个属性都设置一个函数
* 显然不灵活
* 但是如果通过函数的返回值调用就不一样了
*/
function sortByName(obj1 , obj2){
if(obj1.name > obj2.name ){
return 1;
}else if(obj1.name == obj2.name ){
return 0 ;
}else{
return -1 ;
}
} ps.sort(sortByName);
console.info(ps); //[Person { name="Ada", age=41}, Person { name="John", age=23}, Person { name="Leon", age=39}] function sortByAge(obj1 , obj2){
return obj1.age - obj2.age;
}
ps.sort(sortByAge);
console.info(ps); //[Person { name="John", age=23}, Person { name="Leon", age=39}, Person { name="Ada", age=41}] //改造方法
function sortByProperty(propertyName){
var sortFun = function(obj1 , obj2){
if(obj1[propertyName] > obj2[propertyName]){
return 1 ;
}else if(obj1[propertyName] == obj2[propertyName]){
return 0 ;
}else{
return -1 ;
}
}
return sortFun;
} ps.sort(sortByProperty("age"));
console.info(ps); //[Person { name="John", age=23}, Person { name="Leon", age=39}, Person { name="Ada", age=41}] ps.sort(sortByProperty("name"));
console.info(ps); //[Person { name="Ada", age=41}, Person { name="John", age=23}, Person { name="Leon", age=39}] function show(){
var p = document.getElementById("person");
for(var i = 0 ; i < ps.length ; i ++){
p.innerHTML += ps[i].name + " , " + ps[i].age + "<br/>";
}
} show();
</script>
</body>
</html>
js 函数的传值问题的更多相关文章
- JSF页面中使用js函数回调后台bean方法并获取返回值的方法
由于primefaces在国内使用的并不是太多,因此,国内对jsf做系统.详细的介绍的资料很少,即使有一些资料,也仅仅是对国外资料的简单翻译或者是仅仅讲表面现象(皮毛而已),它们的语句甚至还是错误的, ...
- jsp想js,action传值
1.struts2 action如何向JSP的JS函数传值 action中定义变量 public class TestAction extends ActionSupport implements S ...
- JSF页面中使用js函数回调后台action方法
最近遇到了一个问题就是在JSF页面中嵌入html页面,这个html页面中很多功能是使用js动态生成的,现在需要在js函数里想去调用JSF中action类method()方法并动态传送数据给后台进行处理 ...
- js获取url传值的方法
这篇文章主要介绍了js获取url传值的方法,实例分析了字符串分割与正则分析两种方法,并补充了一个基于正则匹配实现的js获取url的get传值函数,需要的朋友可以参考下 js获取url参数值: inde ...
- jsp js action之间传值
1.struts2 action如何向JSP的JS函数传值 action中定义变量 public class TestAction extends ActionSupport implements S ...
- 前端实操案例丨如何实现JS向Vue传值
摘要:项目开发过程中,组件通过render()函数渲染生成,并在组件内部定义了自定义拖拽指令.自定义拖拽指令规定了根据用户可以进行元素拖拽.缩放等一系列逻辑处理的动作. 本文分享自华为云社区<[ ...
- 3.3 js函数
1.函数语法: 函数声明的方式:function 函数名(参数1,参数2-){//函数体;}函数调用:函数名(参数1,参数2-); 函数内不一定都指定返回值. 如果需要指定返回值,可用 return ...
- Js函数function基础理解
正文:我们知道,在js中,函数实际上是一个对象,每个函数都是Function类型的实例,并且都与其他引用类型一样具有属性和方法.因此,函数名实际上是指向函数对象的指针,不与某个函数绑定.在常见的两种定 ...
- js函数表达式和函数声明的区别
我们已经知道,在任意代码片段外部添加包装函数,可以将内部的变量和函数定义"隐 藏"起来,外部作用域无法访问包装函数内部的任何内容. 例如: var a = 2; function ...
随机推荐
- phonegap修改软件名称和图标
修改app 图标 打开AndroidManifest.xml文件 修改application 节点 <application android:allowBackup="true&quo ...
- oracle interval-partition 解决range分区大难题
博客<oracle分区>中讲了oracle的几种分区,并且对于oracle的典型分区如Range分区和List分区给了示例. 在实际运用Range分区时,遇到了这样的难题: createt ...
- 通过反射执行get、set方法
Class clazz = sourceObj.getClass(); 1.获取所有属性 BeanInfo beanInfo = Introspector.getBeanInfo(clazz); Pr ...
- Android开发之旅:环境搭建及HelloWorld
引言 本系列适合0基础的人员,因为我就是从0开始的,此系列记录我步入Android开发的一些经验分享,望与君共勉!作为Android队伍中的一个新人的我,如果有什么不对的地方,还望不吝赐教. 在开始A ...
- 解决 winform 界面对不齐 z
一个winform的程序,本机上界面对得很齐,到一到客户的机器上就惨不忍睹,一番研究后搞定: 1. AutoScaleMode = None 2. BackgroundImageLayout = No ...
- UIImageView 点击放大缩小
static CGRect oldframe; -(void)showImage:(UIImageView *)avatarImageView{ UIImage *image=avatarImageV ...
- php 采集程序 宋正河
本程序主要是通过php采集网页信息,程序自动存储采集进度,采用phpquery简化元素节点匹配,采集到的内容直接入库 你要做的只是写好采集语法,本程序适合有一定php基础的人使用!当然你也可以进行修改 ...
- django-grappelli 安装配置
在python34/scripts文件夹下pip3 install django-grappelli pip安装一般会装在python34的tools或lib之类的文件夹下,一定要找到那个文件夹,gr ...
- Leetcode 210 Course Schedule II
here are a total of n courses you have to take, labeled from 0 to n - 1. Some courses may have prere ...
- 第三次阅读赵炯博士的《linux内核代码完全注释》:序
这是我第三次阅读linux内核代码完全注释了,当然前两次也没有读完,第一次读到第五章,第二次第七章. 所以说,赵炯博士对我最大的帮助时介绍了intel386的结构,以及内核编程的方法. 至于真正的内核 ...