JS学习第六天

来源:互联网 发布:淘宝上买c10a配件违法 编辑:程序博客网 时间:2024/06/03 10:14

6函数

6.1 函数的概念

方案一:循环的嵌套

程序复杂,阅读困难

方案二:函数方法

分解问题,以“多”制胜,“大事化小”

for(var n=2;n<=100;n++){
    if(isPrime(n)){
        document.write(n+"<br>");
    }
}
function isPrime(n){
        var m = Math.ceil(Math.sqrt(n));
        var found = false;
        for (var i = 2; i <= m; i++) {
            if (n % i == 0) {
                return false;
            }
        }
    return true;
}

提供了一个解决规模大、难度高的问题的思路,即将问题分解为一个个简单,规模小的问题。“大事化小 ”

 

6.2 定义与调用

函数的定义:functio isProme (n) {

...

}

 

函数头部,体现函数的设计

函数体,体现函数的实现过程

 

哥德巴赫猜想

var num =Number(prompt("请输入一个大于6的函数"));
var falg = true;
for (var i=6;i<10000;i+=2){
    if(canSplit(n)){
        falg = false;
        break ;
    }
}
alert("哥德巴赫猜想"+(falg?"成功":"失败"));

/*
* 如果系统有一个能判断素数
* 名称;isPrime
* 输入参数:待判断得数
* 输出结果:true/flase
* */
function canSplit(n){
    for(var a=2;a=n/2;a++){
        if(isPrime(a) &&isPrime(n-a)){
            return true;
        }
    }
    return false;
}

 

 

 

 

函数的本质:实现某个独立功能的代码段

“黑箱子”:只关心能否得到想要的结果、需要输入的数。。。。不管工作的原理

 

6.3 参数传递

所谓参数传递就是将实参的值传递给形参,在调用

两种方式:指传递,引用传递

<script>
    var a = 5;
    increase(x);
    alert(a);
    function increase (x){
        x++;
    }
</script>

 

var a =new Object();
a.value = 5;
increase (a);
alert(a.value);

function increase (x){
    x.value++;
}

a.value没有被显示修改,但是加了1,因为x就是a。或者说x是a的别名。

常规类型的参数采用的是值传递

对象类型采用的是引用传递

如果希望把参数从函数中带出来,但是函数的返回值只有一个

6.4 变量作用域

局部变量:在函数内部定义的变量,只能在函数内部使用,不会影响到全局

 

全局变量:在函数外部定义的变量,可在全局进行使用

在函数内部定义一个变量,如果没有加上var,那么这个变量被认为全局变量

function localAllVar(){
     a = 1;
}
function test(){
    alert(a);
}
localAllVar();
test();
alert(a);

 

冲突处理:就近原则,就内部近

 

在局部和全局都定义了相同的名字的变量时,在局部中加上window的前缀

就会访问全局变量

 

当在函数中定义了一个和全局变量名相同的变量,此时在函数中定以前使用,那么这个变量还是函数中的变量,不使用全局变量

原创粉丝点击