js中的值传递

定义:function isPrime(n){

     ......

                      }

Function定义函数的关键字

isPrime是函数的名字,和变量的命名一样,见名思意

n形式参数(形参)

isPrime(12),12就是实际参数。

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

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

设计比实现更重要。

for(var n=2;n <= 100;n++){
    var flag= true;
    if(!isJG(n)){
        flag = false;
    }
}
alert(flag?"成功":"失败")
function
isJG(n){
   while(n != 1){
    if(0 == n%2){
        n /=2;
    }else{
        n =n*3 + 1;
    }
  returntrue
  
}
}

案例:验证哥德巴赫猜想

  /*所有的大于6的偶数都可以分为两个质数之和
* 假设系统有一个能帮我们去判断大于6的偶数能否分解的函数。
* 设计一下函数
* 功能:判断一个数能否分解成两个素数之和
* 名称:canSplit
* 输入参数:待分解的数。
* */
var flag = true;
for(var i=6;i<=10000;i+=2) {
   
if(!canSplit(i)){
        flag =
false;
       
break;
    }
}
    alert(flag ?
"
成功验证":"失败验证");
/*
* 那么如何实现这个函数那,还不是我们能解决的,那就接续分解
* 如果系统能判断素数的函数,那么也简单。
* 设计函数
* 功能:判断一个数是否是素数
* 名称:isPrime
* 输入参数:待判断的数
* 输出结果:TRUE、false;
* */
function canSplit(i){
   
for(var a=2;a<=i/2;a++){
       
if(isPrime(a) && isPrime(i-a)){
           
return true;
        }
    }
   
returnfalse;
}
function isPrime(i){
   
varm = Math.ceil(Math.sqrt(i))
   
var
found =false;
   
for(var n =2;n <= m;n++){
       
if(m%i == 0){
           
return false;
        }
    }
   
returntrue;
}

从案例中可以获得:当一件事大到无法解决时就把它无限分解成自己可以完成的小事情。如果不能解决就一直分解。

输出结果

输入参数

 

函数名

函数的本质:直观理解就是实现某个独立功能的代码段,或者说它就是一个数据加工的黑箱子。所谓的黑箱子就是只关心外面的,比如说他是干啥的,需要输入什么,可以得到什么结



果,不关心里面是怎么工作的。

忽略实现细节。

参数传递

  所谓的参数传递就是将实参的值传递给形参。通过调试开发者工具可以确定形参在被调用之前不存在,当函数被调用时,实参被创建,并且把实参的值给形参。

  参数传递有两种方式:值传递和引用传递。

案例

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

 a的值并没有预期的6;还是5,因为形参和实参是两个不同的变量,x和a没有关系。

引用传递:

var a = new Object();
 a.value=5;
increase(a)
alert(a.value)
function
increase(x){
    x.value++;
}

a.      value没有在表面显示被修改,但是a.value确实被加1啦,因为x就是a,专业点这就是引用。

常规类型的参数采用的是值传递,比如Number、String、boolean

对象类型采用的是引用类型,Object。

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

6.4变量作用域

   局部变量:在函数内部定义的变量,这个变量只能在函数内部使用,在全局中不能使用。

   冲突处理原则:就近原则。当在函数中定义了一个和全局变量名相同的变量,此时函数中在定义前使用,那么这个变量还是函数中的变量,为underfined,不使用全局变量

   局部和全局同时定义了一个相同名字的变量时如何在局部里面访问到全局变量?在局部中给变量一个Window的前缀,可以访问到全局的变量。

在局部中没有用var定义变量被视为全局变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值