[Javascript] 函数参数讨论
2015-08-06 14:07
501 查看
自己的学习小结,可能会有错误,欢迎指正。
函数参数包括:基础类型变量、数组、函数、对象,函数怎么传递参数的?哪些是传值,哪些是传址?下面说的参数均为局部变量。
*传值特点:你变我不变
*传址特点:你变我也变
1.基础类型变量: 传值
2.数组:可以传值也可以传址
3.函数:传址
4.对象:传值
测试代码如下
1.基础类型变量做参数,传的是变量值,因此你变我不变
<!DOCTYPE html>
<html>
<head>
<script src="/jquery/jquery-1.11.1.min.js">
</script>
<script>
$(document).ready(function(){
$("p").click(function(){
testMain();
});
});
function addFirst(i) {
i++;
return i;
}
function change(addFirst, a) {
var b = addFirst(a);
return b;
}
function testMain() {
j = 0;
alert(change(addFirst, j));
alert(j);
}
</script>
</head>
<body>
<p>如果您点击我,我会消失。</p>
<p>点击我,我会消失。</p>
<p>也要点击我哦。</p>
</body>
</html>
2..数组
a. 函数名作为参数,传的是地址,因此你变我也变,arr[0]从1变为‘Aug’
<!DOCTYPE html>
<html>
<head>
<script src="/jquery/jquery-1.11.1.min.js">
</script>
<script>
$(document).ready(function(){
$("p").click(function(){
testMain();
});
});
function change(arr) {
arr[0] = 'Aug';
}
function testMain() {
var arr = [1,2,3,4,5];
change(arr);
alert(arr[0]);
}
</script>
</head>
<body>
<p>如果您点击我,我会消失。</p>
<p>点击我,我会消失。</p>
<p>也要点击我哦。</p>
</body>
</html>
b. 具体某个数组值作为参数,传的是变量值,因此你变我不变
<!DOCTYPE html>
<html>
<head>
<script src="/jquery/jquery-1.11.1.min.js">
</script>
<script>
$(document).ready(function(){
$("p").click(function(){
testMain();
});
});
function change(a) {
a = 'Aug';
}
function testMain() {
var arr = [1,2,3,4,5];
change(arr[0]);
alert(arr[0]);
}
</script>
</head>
<body>
<p>如果您点击我,我会消失。</p>
<p>点击我,我会消失。</p>
<p>也要点击我哦。</p>
</body>
</html>
c. 如果希望一次性传递数组的多个值,且不改变原来数组的值,可采用先arr.join(',')转换成字符串如’1,2,3‘作为参数,在函数里str.split(','),
<!DOCTYPE html>
<html>
<head>
<script src="/jquery/jquery-1.11.1.min.js">
</script>
<script>
$(document).ready(function(){
$("p").click(function(){
testMain();
});
});
function addFirst(i) {
i++;
return i;
}
function change(addFirst, str) {
var b = addFirst(str.split(',')[0]);
return b;
}
function testMain() {
var arr = [1,2,3];
change(addFirst, arr.join(','));
alert(arr.join(','));
}
</script>
</head>
<body>
<p>如果您点击我,我会消失。</p>
<p>点击我,我会消失。</p>
<p>也要点击我哦。</p>
</body>
</html>
3.函数作为参数,参数的是函数名,是传址
<!DOCTYPE html>
<html>
<head>
<script src="/jquery/jquery-1.11.1.min.js">
</script>
<script>
$(document).ready(function(){
$("p").click(function(){
testMain();
});
});
function addFirst(i) {
i++;
return i;
}
function change(addFirst, a) {
var b = addFirst(a);
return b;
}
function testMain() {
var arr = [1,2,3,4,5];
alert(change(addFirst, 1));
}
</script>
</head>
<body>
<p>如果您点击我,我会消失。</p>
<p>点击我,我会消失。</p>
<p>也要点击我哦。</p>
</body>
</html>
4.函数参数为对象,传的是地址,因此你变我也变:一开始stu赋值为‘Mike’, 调用‘rename(stu,‘Luck’)’后,stu名称变为'Luke'
<!DOCTYPE html>
<html>
<head>
<script src="/jquery/jquery-1.11.1.min.js">
</script>
<script>
$(document).ready(function(){
$("p").click(function(){
testMain();
});
});
function Stu(name) {
this.name = name;
}
Stu.prototype.setName = function(name) {
this.name = name;
}
Stu.prototype.getName = function() {
return this.name;
}
function rename(stu, name) {
stu.setName(name);
}
function testMain() {
var stu = new Stu('Milke');
rename(stu, 'Luck')
alert(stu.getName());
}
</script>
</head>
<body>
<p>如果您点击我,我会消失。</p>
<p>点击我,我会消失。</p>
<p>也要点击我哦。</p>
</body>
</html>
函数参数包括:基础类型变量、数组、函数、对象,函数怎么传递参数的?哪些是传值,哪些是传址?下面说的参数均为局部变量。
*传值特点:你变我不变
*传址特点:你变我也变
1.基础类型变量: 传值
2.数组:可以传值也可以传址
3.函数:传址
4.对象:传值
测试代码如下
1.基础类型变量做参数,传的是变量值,因此你变我不变
<!DOCTYPE html>
<html>
<head>
<script src="/jquery/jquery-1.11.1.min.js">
</script>
<script>
$(document).ready(function(){
$("p").click(function(){
testMain();
});
});
function addFirst(i) {
i++;
return i;
}
function change(addFirst, a) {
var b = addFirst(a);
return b;
}
function testMain() {
j = 0;
alert(change(addFirst, j));
alert(j);
}
</script>
</head>
<body>
<p>如果您点击我,我会消失。</p>
<p>点击我,我会消失。</p>
<p>也要点击我哦。</p>
</body>
</html>
2..数组
a. 函数名作为参数,传的是地址,因此你变我也变,arr[0]从1变为‘Aug’
<!DOCTYPE html>
<html>
<head>
<script src="/jquery/jquery-1.11.1.min.js">
</script>
<script>
$(document).ready(function(){
$("p").click(function(){
testMain();
});
});
function change(arr) {
arr[0] = 'Aug';
}
function testMain() {
var arr = [1,2,3,4,5];
change(arr);
alert(arr[0]);
}
</script>
</head>
<body>
<p>如果您点击我,我会消失。</p>
<p>点击我,我会消失。</p>
<p>也要点击我哦。</p>
</body>
</html>
b. 具体某个数组值作为参数,传的是变量值,因此你变我不变
<!DOCTYPE html>
<html>
<head>
<script src="/jquery/jquery-1.11.1.min.js">
</script>
<script>
$(document).ready(function(){
$("p").click(function(){
testMain();
});
});
function change(a) {
a = 'Aug';
}
function testMain() {
var arr = [1,2,3,4,5];
change(arr[0]);
alert(arr[0]);
}
</script>
</head>
<body>
<p>如果您点击我,我会消失。</p>
<p>点击我,我会消失。</p>
<p>也要点击我哦。</p>
</body>
</html>
c. 如果希望一次性传递数组的多个值,且不改变原来数组的值,可采用先arr.join(',')转换成字符串如’1,2,3‘作为参数,在函数里str.split(','),
<!DOCTYPE html>
<html>
<head>
<script src="/jquery/jquery-1.11.1.min.js">
</script>
<script>
$(document).ready(function(){
$("p").click(function(){
testMain();
});
});
function addFirst(i) {
i++;
return i;
}
function change(addFirst, str) {
var b = addFirst(str.split(',')[0]);
return b;
}
function testMain() {
var arr = [1,2,3];
change(addFirst, arr.join(','));
alert(arr.join(','));
}
</script>
</head>
<body>
<p>如果您点击我,我会消失。</p>
<p>点击我,我会消失。</p>
<p>也要点击我哦。</p>
</body>
</html>
3.函数作为参数,参数的是函数名,是传址
<!DOCTYPE html>
<html>
<head>
<script src="/jquery/jquery-1.11.1.min.js">
</script>
<script>
$(document).ready(function(){
$("p").click(function(){
testMain();
});
});
function addFirst(i) {
i++;
return i;
}
function change(addFirst, a) {
var b = addFirst(a);
return b;
}
function testMain() {
var arr = [1,2,3,4,5];
alert(change(addFirst, 1));
}
</script>
</head>
<body>
<p>如果您点击我,我会消失。</p>
<p>点击我,我会消失。</p>
<p>也要点击我哦。</p>
</body>
</html>
4.函数参数为对象,传的是地址,因此你变我也变:一开始stu赋值为‘Mike’, 调用‘rename(stu,‘Luck’)’后,stu名称变为'Luke'
<!DOCTYPE html>
<html>
<head>
<script src="/jquery/jquery-1.11.1.min.js">
</script>
<script>
$(document).ready(function(){
$("p").click(function(){
testMain();
});
});
function Stu(name) {
this.name = name;
}
Stu.prototype.setName = function(name) {
this.name = name;
}
Stu.prototype.getName = function() {
return this.name;
}
function rename(stu, name) {
stu.setName(name);
}
function testMain() {
var stu = new Stu('Milke');
rename(stu, 'Luck')
alert(stu.getName());
}
</script>
</head>
<body>
<p>如果您点击我,我会消失。</p>
<p>点击我,我会消失。</p>
<p>也要点击我哦。</p>
</body>
</html>
相关文章推荐
- JS封装的几个位操作函数和16进制操作函数
- JS判断,今天所在季度,第几周, 季度的第几周,年度第几周
- 编写良好javascript,css,html的方法技巧(持续更新……)
- 使用js处理图片效
- 30天了解30种技术系列---(1)现代web应用服务器-Express.js
- Extjs radiogroup 获取选中
- 整理 Anglarjs的service,directve的基本用法
- Extjs textfield 宽
- js运动基础
- javaScript对Cookie的添加,获取,删除等操作
- JS 导出网页中Table内容到excel
- javascript实现鼠标放上后下边对应内容变换的效果
- JAVASCRIPT——文字出现效果练习
- ajax无刷新上传(使用ajaxfileupload.js)
- webservice 实现json模式
- js 常用方法
- js 请求URL 追加参数
- JavaScript 之 SeaJS 学习
- [Javascript] 对象的创建与类的封装
- JavaScript之数据类型