javascript 函数详解

1、函数:
为完成某一个功能的程序指令(语句)的集合,称为函数。
在js中,函数分为:自定义函数、系统函数(经常查看js帮助手册)
③基本语法
function 函数名(参数列表){
//代码…
return 值;//可以选择
}

例如:

<html>
       <head>
              <scriptlanguage="javascript">
                     //输入两个数,再输入一个运算符(+_*/),得到结果
                     varnum1=window.prompt("请输入第一个num");
                     varnum2=window.prompt("请输入第二个num");
                     varoperator=window.prompt("请输入运算符");
 
                     num1=parseFloat(num1);
                     num2=parseFloat(num2);
 
                     //如何调用函数
 
                     document.writeln("res="+jsSuan(num1,num2,operator));
                     //自定义函数
                     functionjsSuan(num1,num2,operator){ //特别强调 参数名请不要带var
                     var res=0;
                     if(operator=="+"){
                            res=num1+num2;
                     }elseif(operator=="-"){
                            res=num1-num2;
                     }elseif(operator=="*"){
                            res=num1*num2;
                     }else{
                            res=num1/num2;
                     }
                     return res; //返回
                     }
                    
              </script>
       </head>
       <body></body>
</html>


改进:
把上面的函数单独提出,写到js文件中,然后在需要的地方引入   

myfuns.js


function jsSuan(num1,num2,operator){ //特别强调 参数名请不要带var
                     var res=0;
                     if(operator=="+"){
                            res=num1+num2;
                     }elseif(operator=="-"){
                            res=num1-num2;
                     }elseif(operator=="*"){
                            res=num1*num2;
                     }else{
                            res=num1/num2;
                     }
                     return res; //返回
                     }


在如下HTML文件中引入上面js代码:

<html>
       <head>
              <script language="javascript" src="myfuns.js">
		//引入js代码方法
	      </script>
              <script language="javascript">
                     //输入两个数,再输入一个运算符(+_*/),得到结果
                     var num1=window.prompt("请输入第一个num");
                     var num2=window.prompt("请输入第二个num");
                     var operator=window.prompt("请输入运算符");
 
                     num1=parseFloat(num1);
                     num2=parseFloat(num2);
 
                     //外部引用
 
                     document.writeln("res="+jsSuan(num1,num2,operator));
              </script>
       </head>
       <body></body>
</html>

2、函数的使用

(1)、系统函数:
如eval()用的很多,它可以把一个字符串当做脚本来执行。在动态脚本的时候用的比较多。
JavaScript  eval() 函数


定义和用法

eval() 函数计算 JavaScript字符串,并把它作为脚本代码来执行。

如果参数是一个表达式,eval()函数将执行表达式。如果参数是Javascript语句,eval()将执行 Javascript语句。

语法

eval(string)

实例

执行JavaScript代码或表达式:

<script>

eval("x=10;y=20;document.write(x*y)");
document.write("<br>" + eval("2+2"));
document.write("<br>" + eval(x+17));

</script>


以上实例输出结果:

200
4
27


对中文进行编码,主要是为了防止乱码。先编码然后再转码。
escape和unescape函数往往配合使用,可以防止乱码的出现

JavaScript escape() 函数


定义和用法

escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。

该方法不会对 ASCII字母和数字进行编码,也不会对下面这些 ASCII标点符号进行编码: * @ - _ + . /。其他所有的字符都会被转义序列替换。

提示: 使用 unescape() 方法对字符串进行解码

实例

使用 escape() 来编码字符串:

<script>

document.write(escape("Need tips? Visit W3Cschool!"));

</script>

以上实例输出结果:

Need%20tips%3F%20Visit%20W3Cschool%21

 

JavaScript unescape() 函数


定义和用法

unescape() 函数可对通过 escape()编码的字符串进行解码。

提示: 使用函数escape() 对字符串进行编码。

实例

在本例中,我们将使用 escape() 来编码字符串,然后使用 unescape() 对其解码:

<script>

var str="Need tips? Visit W3Schools!";
var str_esc=escape(str);
document.write(str_esc + "<br>")
document.write(unescape(str_esc))

</script>

以上实例输出结果:

Need%20tips%3F%20Visit%20W3Cschool%21
Need tips? Visit W3Cschool!

 

函数的定义

function 函数名(参数列表){
语句; //函数(方法)主体
return 返回值;
}

1.参数列表:表示函数的输入
2.函数主体:表示为了实现某一功能代码块
3.函数可以有返回值,也可以没有

4. 方法可以没有返回值,但最多只能有一个返回值。


3、函数的几种调用方式
①函数名(传递给函数的参数1,传递给函数的参数2,…)
②变量=函数名;(不推荐用)
此时变量就相当于函数的引用(指针),可以这样调用函数:
变量(实际参数…)
特别说明
1.对于有返回值的函数调用,也可以在程序中直接使用返回的结果,例如:alert("res="+sum(2,3));

2.没有返回值的函数,则返回undefined。


函数调用的方式

1.普通调用
函数名(实际参数…);
2.通过指向函数的变量去调用
var myvar=函数名;
myvar(实际参数);
3.关于接收函数返回值的问题
var myvar=test('abc');
//如果test函数没有返回值,但是你又接收了,则返回的就是undefined
//先输出函数调用abc,然后再输出undefined
window.alert(myvar);

//如果有返回值,则,是什么就是什么


函数——调用过程


递归,
下面的js代码会输出什么

<html>
    <head>
        <scriptlanguage="javascript">
            //abc是一个函数,它接收数值
            functionabc(num1){
                if(num1>3){
                    abc(--num1);//递归
                }
                document.writeln(num1);
            }
            abc(5);
        </script>
    </head>
    <body></body>
</html>


 

先复习下:++和--
b=++a;先自加,然后再赋值;
b=a++;先赋值,然后再自加;

程序依次打印输出:3 3 4。

对执行函数时,就要开辟新栈,新栈执行完毕后,就要被销毁,然后退回。

函数——深入使用
①函数的参数列表可以是多个
②函数列表可以是多个,并且数据类型可以是任意的类
③js支持参数个数可变的函数

④js支持创建动态函数

<html>
    <head>
        <scriptlanguage="javascript">
            //编写一个函数,可以接受任意多个数,并计算他们的和
            functionabc(){
                //在js中有一个arguments,可以访问所以传入值
                //打印参数的个数
                //window.alert(arguments.length);
                //既然能得到参数的个数,就用for循环遍历,参数具体的值
                //遍历所有的参数
                varres=0;
                for(vari=0;i<arguments.length;i++){
                    window.alert(arguments[i]);
                    res+=arguments[i];
                }
                window.alert(res);
            }
            abc(4,3,5);
        </script>
    </head>
    <body></body>
</html>


注:
(1)javascript是弱数据类型语言
(2)特别强调一下,js的函数天然支持可变参数。javascript天然支持可变,之所以天然支持可变,和语言本身的特点是有关系的,因为它是动态语言,它在执行的瞬间才去判读

(3)javascript不支持重载.

(4)js的基本类型是按值传递的(对象除外)

(5)对象按共享传递

按共享传递的理解:

可以把一个对象拆成3部分
1、变量的地址
2、值或对象的地址
3、对象中储存的值

方法传递的是:1和2,即复制1和2的值将其作为参数传入方法中
方法1中:

var obj = {x : 1};
function foo(o) {
    o.x = 3;
}
foo(obj);
console.log(obj.x); // 3, 被修改了!

改变的是3的部分,3在内存中只有一份,方法内和方法外的2指向同一个3,因此改变了o.x
方法2中:

var obj = {x : 1};
function foo(o) {
    o = 100;
}
foo(obj);
console.log(obj.x); // 仍然是1, obj并未被修改为100.
改变的是2的部分,方法内和方法外的2在内存中有2份,改变其中一份并不影响另一份

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值